【发布时间】:2013-12-30 09:44:12
【问题描述】:
我想像下面这样查询,但这只包含一个$cond。
两个$cond如何查询?
collection.aggregate(
{
$match : {
'_id' : {$in:ids}
}
},
{
$group: {
_id: '$someField',
...
count: {$sum: { $cond: [ { $eq: [ "$otherField", false] } , 1, 0 ] }}
}
},
function(err, result){
...
}
);
【问题讨论】:
-
如果它们完全不同,那么您需要向
$group添加一个全新的字段,这基本上是您的count字段的副本,但名称当然不同 -
我要检查 $anotherField, "value" 和 $otherField, false
-
但是我假设您还想要不满足该条款的文档,否则您可以将其放入匹配项中
-
是的,我想获得其他不满足该条款的文件。所以条件必须在 sum 子句中..
-
我不完全清楚你想要做什么,但 StackOverflow 上还有一些其他示例,nested
$cond(类似于 case 语句)或使用 multiple$cond。我认为您所追求的是嵌套的$cond,您可以通过在$otherField不为假的表达式中添加另一个$cond比较来有条件地对$anotherField进行匹配。
标签: mongodb aggregation-framework