【发布时间】:2015-02-27 12:15:00
【问题描述】:
我有一个名为votes的集合:
{
"_id" : ObjectId("54a3cb59b2b8ded51693074d"),
"Pseudo" : "Cacaboy",
"Type" : "down",
"postvote" : ObjectId("54a2f05bedbe1109145b06b6"),
"CreatedDate" : ISODate("2014-12-31T10:02:34.209Z"),
"__v" : 0
}
{
"_id" : ObjectId("54a3d776ecbf63c61a91d396"),
"Pseudo" : "CosmicJB",
"Type" : "up",
"postvote" : ObjectId("54a2f05bedbe1109145b06b6"),
"CreatedDate" : ISODate("2014-12-31T11:01:10.715Z"),
"__v" : 0
}
{
"_id" : ObjectId("54a3dca5b2b8ded51693074e"),
"Pseudo" : "hateman",
"Type" : "down",
"postvote" : ObjectId("54a2f05bedbe1109145b06b6"),
"CreatedDate" : ISODate("2014-12-31T10:02:34.209Z"),
"__v" : 0
}
实施的聚合管道:
Vote.aggregate({$match: {postvote: pvote}},
{$group: {_id: '$Type',
n: { $sum: 1 }
}},
function(err, cb){
console.log(cb);
});
获得o/p:
[ { _id: 'up', n: 1 }, { _id: 'down', n: 2 } ]
想要的结果,对于postvote:
- 如果
up和down投票,则两者都在场,则result:up-down。 - 如果只有
down投票,那么result: -down。 - 如果只有
up投票,那么result:up。
是否可以使用聚合?
【问题讨论】:
-
如果 up - down = result 是什么意思?
-
所以你要计算净票数?
-
@Barno 一个聚合函数返回 voteUP 减去 voteDOWN
-
是的@BatScream,我想根据postvote是否存在投票和投票来计算投票
-
@PixelPixel,请务必注意正确格式化问题并准确表达您的要求。这将有助于您的问题得到更多关注。请查看我的回答。