MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Sortieren Sie das Array im Dokument mit MongoDB

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.