Je vois le problème. Les gens recherchent et trouvent cette réponse stackoverflow :
C'est faux, car il ne "reconstruit" jamais le tableau.
Vous faites cela avec $group
et $push
, et puisque vous regroupez, vous voudrez $first
pour les autres champs du document souhaité :
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" }
}}
])
Notez également le $sort
est appliqué à la fois au "_id"
et l'autre champ à trier. C'est ainsi que le tri est appliqué par document et est important lorsque les détails du document sont regroupés dans $group
.
Maintenant, le document a le même aspect qu'avant, mais cette fois, les membres du tableau sont triés.