1
我有一個使用這樣的聚合框架的MongoDB查詢:MongoDB的總結,然後平均
System._get_collection().aggregate([
{ "$match": {
"system_id": system.id,
"utc_timestamp": {
"$gte": datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0) - datetime.timedelta(days=1),
"$lt": datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
}
}},
{ "$group": {
"_id": { "$dayOfYear": "$utc_timestamp" },
"correct": {
"$sum": { "$cond": [
{ "$eq": [ "$status", 455 ]}, 1, 0
]}
},
"total_count": { "$sum": 1 }
}},
{ "$project": {
"correctness": {
"$cond": [
{ "$eq": [ "$correct", 0 ] },
0,
{ "$multiply" : [{"$divide": [ "$correct", "$total_count" ]}, 100] }
]
}
}}
])
輸出看起來是這樣的:
{'result': [{'_id': 272, 'correctness': 99.89373007438896}], 'ok': 1.0}
我想一個字段添加到其結果是每個匹配System
文檔中所有delay
字段的平均值。
我試圖將"delay": { "$avg": "$delay" },
添加到$group
部分,但它沒有改變結果。
我想這樣的結果:
{'result': [{'_id': 272, 'correctness': 99.89373007438896, 'delay': 5}], 'ok': 1.0}
注意'delay': 5
上述這應該是計算平均值。
我是否需要以某種方式將其添加到投影中?或者,我在做別的事情嗎?