2016-08-01 17 views
0

Ich muss den Durchschnitt der gesammelten Sammlung pro Tag berechnen. Ich habe eine Abfrage pro Minute erstellt. Jetzt möchte ich diese Abfrage pro Tag Durchschnitt konvertieren. Meine pro Minute Abfrage wie folgtWie berechnet man den Durchschnitt pro Tag mit 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}} 
     ] 
    } 
} 
); 

Können Sie mir empfehlen, wie pro Tag berechnen Durchschnitt?

+1

Können Sie bitte mit einem Beispieldokument aktualisieren? –

+0

@CS_noob Ich aktualisiere meine Qrstion und füge mein Sample der Sammlung hinzu. –

Antwort

1

Gruppe von Datum

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

Vielen Dank endlich berechnen avg –

+0

Abfrage Erstellungszeit ist mehr als 24 Sekunden für mehr als 5 Lac Datensätze –

+0

Ich muss $ Datum in Millisekunden .. Wie kann ich das tun. Bitte schlagen Sie mir vor, wie Sie $ date konvertieren in Milliesonds konvertieren –

Verwandte Themen