Model.aggregate([
{
'$group': {
'_id': '$id',
'name': { '$first': '$name' },
'tof': { $sum: { $eq:["$tof",true] } },
}
}
]) .... // rest of the code.
我试图将tof(true或false)字段求和,但仅当值为true时,但是不能像我正在尝试的那样工作..
我在这里做错了什么?怎么办?
谢谢!
答案 0 :(得分:2)
您可以在查找中省略它们,而不是像在这种情况下那样提取和迭代您不需要使用$cond
的文档:
Model.aggregate([
{
'$match': {'tof': true}
},
{
'$group': {
'_id': '$id',
'name': { '$first': '$name' },
'tof': { $sum: 1 },
}
}
])
但是,由于您使用多个计数,因此需要$cond
(http://docs.mongodb.org/manual/reference/operator/aggregation/cond/),所以这是一个示例:
Model.aggregate([
{
'$group': {
'_id': '$id',
'name': { '$first': '$name' },
'tof': { $sum: {$cond: [{$eq:['$tof', true]}, 1, 0]} },
}
}
])