MongoDB中得到dictfield /嵌入文档
问题描述:
的平均我有一个MongoDB的文件是这样的:MongoDB中得到dictfield /嵌入文档
{
...
score: 200,
timing: {
rT: 124
},
utc_timestamp: ISODate("2014-10-19T04:45:04.772Z")
}
我可以用这个查询得到score
平均:
System._get_collection().aggregate([
{ "$match": {
"system_id": system.id,
"utc_timestamp": {
"$gte": datetime.datetime.utcnow().replace(hour=0, minute=0, second=0, microsecond=0) - datetime.timedelta(days=1),
"$lt": datetime.datetime.utcnow().replace(hour=0, minute=0, second=0, microsecond=0)
}
}},
{ "$group": {
"_id": { "$dayOfYear": "$utc_timestamp" },
"delay": { "$avg": "$score" },
"up": {
"$sum": { "$cond": [
{ "$eq": [ "$result", 405 ]}, 1, 0
]}
},
"total_count": { "$sum": 1 }
}},
{ "$project": {
"airtime": {
"$cond": [
{ "$eq": [ "$up", 0 ] },
0,
{ "$multiply" : [{"$divide": [ "$up", "$total_count" ]}, 100] }
]
},
"delay": 1
}}
])
注行:
"delay": { "$avg": "$score" },
如何获得平均值timing
字典里面的rT
字段?
这不起作用:
{ "$avg": "$timing.rT" }
答
的{ "$avg": "$timing.rT" }
的语法是正确的,应该很好地工作。
如何“不起作用”? '{“$ avg”:“$ timing.rT”}'看起来不错,应该可以工作。 – famousgarkin 2014-10-19 05:35:00
其实,它看起来像平均值为'0',所以它正在工作。如果你想要一个答案,语法是正确的,我很高兴接受。 – okoboko 2014-10-19 05:56:43