Sortieren nach Datum in Mungo-aggregation framework
Im arbeiten auf einer nodejs+mongodb-Projekt mit Mungo. Jetzt habe ich über eine Frage, die ich nicht wissen, die Antwort auf.
Ich bin mit aggregation-framework zu bekommen, gruppiert die Ergebnisse. Die Gruppierung erfolgt auf ein Datum ohne Zeit-Daten-Feld wie: "2013 02 06". Code sieht wie folgt aus:
MyModel.aggregate([
{$match: {$and: [{created_date: {$gte: start_date}}, {created_date: {$lte: end_date}}]}},
{$group: {
_id: {
year: {$year: "$created_at"},
month: {$month: "$created_at"},
day: {$dayOfMonth: "$created_at"}
},
count: {$sum: 1}
}},
{$project: {
date: {
year: "$_id.year",
month:"$_id.month",
day:"$_id.day"
},
count: 1,
_id: 0
}}
], callback);
Zusammengefassten Ergebnisse sind perfekt, außer, dass Sie nicht sortiert sind. Hier ist ein Beispiel der Ausgabe:
[
{
count: 1,
date: {
year: 2013,
month: 2,
day: 7
}
},
{
count: 1906,
date: {
year: 2013,
month: 2,
day: 4
}
},
{
count: 1580,
date: {
year: 2013,
month: 2,
day: 5
}
},
{
count: 640,
date: {
year: 2013,
month: 2,
day: 6
}
}
]
Ich weiß, die Sortierung erfolgt, indem diese: {$sort: val}
. Aber ich bin mir jetzt nicht sicher was das sein soll val
so würden die Ergebnisse werden nach Datum sortiert als mein Gruppierungsschlüssel es ein Objekt von 3 Werten konstruieren Sie das Datum ein. Weiß jemand wie das erreicht werden könnte?
BEARBEITEN
Habe versucht und es funktionierte 🙂
{$sort: {"date.year":1, "date.month":1, "date.day":1}}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint es, dass diese Frage eine sehr einfache Antwort 🙂 brauchen Nur zu Sortieren, die von mehreren nesteed Spalten wie diese:
{$sort: {"date": 1} }
Ich blieb stecken mit dem gleichen problem, danke für deine Antwort.
Aber ich fand heraus, dass man das gleiche Ergebnis mit weniger code
Dieser würde funktionieren, wenn du nur die Sortierung nach Datum, wenn Sie hatte andere columsn zu Sortieren. Sie würde erweitern müssen, _id