Vedo il problema. Le persone stanno cercando e trovando questa risposta di stackoverflow:
È sbagliato, poiché non "ricostruisce" mai l'array.
Puoi farlo con $group
e $push
e poiché stai raggruppando, vorrai $first
per gli altri campi del documento che desideri:
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" }
}}
])
Nota anche il $sort
viene applicato a entrambi i "_id"
e l'altro campo da ordinare. In questo modo l'ordinamento viene applicato per documento ed è importante quando i dettagli del documento vengono rimessi insieme in $group
.
Ora il documento ha lo stesso aspetto di prima, ma questa volta i membri dell'array sono ordinati.