Ik zie het probleem. Mensen zoeken en vinden dit stackoverflow-antwoord:
Het is verkeerd, omdat het de array nooit "reconstrueert".
Dat doe je met $group
en $push
, en aangezien je aan het groeperen bent, wil je $first
voor de andere velden in het gewenste document:
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" }
}}
])
Let ook op de $sort
wordt toegepast op zowel de "_id"
en het andere veld om te sorteren. Dit is zo dat de sortering per document wordt toegepast en is belangrijk wanneer de documentdetails weer bij elkaar worden gezet in $group
.
Nu ziet het document er hetzelfde uit als het deed, maar deze keer zijn de arrayleden gesorteerd.