我想實現與$ COND $總和:
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
]
}
}
}
}
)
第一種方式有點難。第二個很簡單。雖然應該有簡單的$或$組?希望mongo發佈此功能。 –
@SomnathMuluk考慮到所示的三種方法,我認爲你的意思是「第三種方式」,而對於像我這樣做的所有代碼的記錄都是這樣做的,因爲這是合乎邏輯的方法。如果你的意思是你想要一個'$ in'子句,那麼考慮你首先要求這個提供給'$ cond',那麼這樣一個操作的語法究竟是什麼?你在哪裏指定你想比較的領域?歡迎您以任何此類建議發佈[JIRA](https://jira.mongodb.org/secure/Dashboard.jspa)。 –
是的,我的意思是第二和第三個很容易。並已有建議作爲https://jira.mongodb.org/browse/SERVER-6146 –