MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Ordina l'array nel documento con MongoDB

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.