2016-08-01 78 views
0

我必須計算每天收集的平均值。我在每分鐘的基礎上創建了一個查詢。現在我想每天平均轉換這個查詢。 我每分鐘的查詢,如下所示如何使用MongoDB計算每日平均字段?

db.voltage.aggregate(
{ 
    $unwind: { 
     path:"$KeyValues", 
     includeArrayIndex:"arrayIndex", 
     preserveNullAndEmptyArrays:true 
    } 
}, 
{ 
    $project: { 
      timestamp:{ 
"$add":["$EventTS",{"$multiply":[60000,"$arrayIndex"]}] 
      } , 
     "RVoltage":"$KeyValues.RVoltage", 
     arrayIndex:1, 
     } 
}, 
{ 
    $match: { 
     $and: [ 
      {RVoltage: {$ne: null}} 
     ] 
    } 
} 
); 

您能否提供我如何每天計算平均?

+1

可以請你的樣本文件更新? –

+0

@CS_noob我更新我的問題並添加了我的樣本集合。 –

回答

1

集團按日期

db.voltage.aggregate([ 
    {$project: { 
     date: {$dateToString: {format: "%Y-%m-%d", date: "$EventTS"}}, 
     KeyValues:1 
    }}, 
    {$unwind: '$KeyValues'}, 
    {$project: { 
     date: 1, 
     RVoltage: '$KeyValues.RVoltage' 
    }}, 
    {$group: { 
     _id: '$date', 
     avg: {$avg: '$RVoltage'} 
    }}, 
    {$sort: {_id: 1}} 
]) 
{ "_id" : "2015-07-02", "avg" : 234.1845454545454 } 
{ "_id" : "2016-06-30", "avg" : 249.9316666666667 } 
{ "_id" : "2016-07-01", "avg" : 244.08681818181822 } 
+0

謝謝多多最後計算平均值 –

+0

查詢時間超過24秒超過5個lac記錄 –

+0

我必須將$ date轉換爲毫秒..我可以如何做到這一點。請建議我如何將$ date轉換爲毫秒 –