2016-08-01 6 views
0

私は1日あたりの平均収集額を計算する必要があります。分ごとに1つのクエリを作成しました。今、私はこのクエリを1日平均で変換したいと思います。 私のあたりの分クエリMongoDBを使用して1日あたりの平均フィールドを計算する方法は?

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私のqurstionを更新し、コレクションのサンプルを追加しました。 –

答えて

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

クエリの実行時間が5秒以上のレコードの場合は24秒以上です –

+0

私はミリ秒単位で$ dateにする必要があります。どうか$ dateをミリ秒に変換する方法を教えてください –

関連する問題