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" }

+0

如何“不起作用”? '{“$ avg”:“$ timing.rT”}'看起来不错,应该可以工作。 – famousgarkin 2014-10-19 05:35:00

+0

其实,它看起来像平均值为'0',所以它正在工作。如果你想要一个答案,语法是正确的,我很高兴接受。 – okoboko 2014-10-19 05:56:43

{ "$avg": "$timing.rT" }的语法是正确的,应该很好地工作。