2015-02-03 3 views
0
MongoDB를에 저장된 시계열 데이터가

, 여기에 매 분마다 저장되어있는 문서입니다 : (계산 필드

{ "_id" : ObjectId("54b7f78b33f0f76f26e49d79"), "timestamp" : ISODate("2015-01-15T17:23:23.215Z"), 
    "sensors_data" : { 
     "sen1" : { "@name" : "sensor-1", "@id" : "sen1", "value" : 10 }, 
     "sen2" : { "@name" : "sensor-2", "@id" : "sen2", "value" : 27 }, 
     "sen3" : { "@name" : "sensor-3", "@id" : "sen3", "value" : 19 }, 
     "sen4" : { "@name" : "sensor-4", "@id" : "sen4", "value" : 25 }, 
    } 
} 

내가 모든 하위 문서에 대한 값 필드의 평균을 계산하는 쿼리를 필요를 SEN1, SEN2, 등) :

{ "averages": { "sen1": "11.5", "sen2": "26", "sen3": "19.2", "sen4": "26.5" } } 

답변

1

원하는 결과를 얻으려면 집계 프레임 워크가 사용됩니다. (샘플 데이터)

db.test.aggregate(
    { 
    $group: 
    { 
     _id: null, 
     sen1: { $avg: "$sensors_data.sen1.value" }, 
     sen2: { $avg: "$sensors_data.sen2.value" }, 
     sen3: { $avg: "$sensors_data.sen3.value" }, 
     sen4: { $avg: "$sensors_data.sen4.value" } 
     } 
} 
) 

출력 :

{ 
"result" : [ 
    { 
     "_id" : null, 
     "sen1" : 11, 
     "sen2" : 28.5, 
     "sen3" : 24, 
     "sen4" : 38.5 
    } 
], 
"ok" : 1 
} 
+0

정확히 내가 필요로 무엇을, 감사합니다! – balas