Ich sehe das Problem. Die Leute suchen und finden diese Stackoverflow-Antwort:
Es ist falsch, da es das Array niemals "rekonstruiert".
Das machst du mit $group
und $push
, und da Sie gruppieren, möchten Sie $first
für die anderen Felder im gewünschten Dokument:
db.TrafficStatistic.aggregate([
{ "$unwind": "$statistic" },
{ "$sort": { "_id": 1, "statistic.data.desktop.users": 1 } },
{ "$group": {
"_id": "$_id",
"monthStart" : { "$first": "$monthStart" },
"monthEnd" : { "$first": "$monthEnd" },
"date" : { "$first": "$date" },
"statistic": { "$push": "$statistic" }
}}
])
Beachten Sie auch den $sort
wird sowohl auf "_id"
angewendet und das andere Feld zum Sortieren. Daher wird die Sortierung pro Dokument angewendet und ist wichtig, wenn die Dokumentdetails wieder in $group
zusammengestellt werden .
Jetzt sieht das Dokument genauso aus wie vorher, aber dieses Mal sind die Array-Mitglieder sortiert.