Mongo Durchschnittliche aggregation-Abfrage ohne group
Ich versuche, die durchschnittlich ein ganzes Feld mit dem aggregation framework in Mongo. Allerdings kann ich nicht scheinen zu finden, ein beliebiges Beispiel, das es verwendet, ohne eine Gruppe parameter.
Habe ich das folgende Dokument Struktur:
{
"_id" : ObjectId("5352703b61d2739b2ea44e4d"),
"Semana" : "2014-02-23 - 2014-03-01",
"bolsaDeValores" : "7",
"bvc" : "8",
"dollar" : "76",
"ecopetrol" : "51",
"dollarPrice" : "18"
}
Grundsätzlich, was ich will zu tun ist, erhalten den durchschnittlichen Wert der bvc-Feld, und jede andere numerische, für die ganze Sammlung, in der schnellsten möglichen Weise (ohne Verwendung von MapReduce, wie es ist weniger effizient als die Aggregation Framework).
Ich habe versucht, die Gruppe auf, der größer ist als null-basis, aber ohne Erfolg:
db.EvaluatedSentiments.aggregate([
{ "$group": {
"bvc" : {"$gt:0"}
},
{
"bvc" : { "$avg" : "$bvc"}
}
}
])
Ich Schätze jede Hilfe, die Sie bieten könnte.
Referenzen: Mongo aggregation Handbuch
- Gruppe durch null statt
- Sie tun eigentlich klar, dass keiner der Werte, die Sie präsentieren, sind eigentlich numerisch, nicht wahr? Sie sind in der Tat alle Saiten.
- Das ist sehr wahr, ich hatte nicht erkannt, dass über es, eine Unterlassung, die ich gemacht, während die Speicherung der Werte. Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst speichern numerische Werte, die als zahlen. Danach können Sie eine einfache Anweisung, um den Mittelwert zu berechnen:
Können Sie einfach mehr
$avg
aggregation Betreiber bekommen im Durchschnitt für Ihre anderen numerischen Feldern:Also, wenn Ihre Daten tatsächlich war die numerische, das ist es nicht, und Ihre Absicht ist, um auszuschließen, die Dokumente, die "größer als null" - Wert, fügen Sie ein
$match
- Anweisung in Ihrer aggregation pipeline, um Sie "filter" aus diesen Dokumenten: