【发布时间】:2016-02-17 12:35:15
【问题描述】:
我想通过在属性上使用 $or 来获得 $cond 的 $sum:
db.collectionName.aggregate(
{
"$group": {
"_id":'$created_at',
"count": {"$sum": 1},
"count_failure": {
"$sum": {
"$cond": [
{
"$id":
{ "$in": [ 0,100,101,102,103,104,105 ] }
},
1,
0
]
}
}
}
}
)
但错误提示:Invalid operator "$id"
语法有什么问题?或者我写错了查询。
目前我正在通过以下方式实现这一目标:
db.collectionName.aggregate(
{
"$group": {
"_id":'$created_at',
"count": {"$sum": 1},
"count_failure": {
"$sum": {
"$cond": [
{
"$or":[
{ "$eq": [ "$id", 0 ] },
{ "$eq": [ "$id", 100 ]},
{ "$eq": [ "$id", 101 ]},
{ "$eq": [ "$id", 102 ]},
{ "$eq": [ "$id", 103 ]},
{ "$eq": [ "$id", 104 ]},
{ "$eq": [ "$id", 105 ]}
]
},
1,
0
]
}
}
}
}
)
【问题讨论】:
-
看起来since version 3.4
$in现在在聚合管道中的cond谓词中得到支持 -
$in: ["$$id",[0,100,101,102,......]] 就是这样
标签: mongodb mongodb-query aggregation-framework