Veo el problema. La gente está buscando y encontrando esta respuesta de stackoverflow:
Está mal, ya que nunca "reconstruye" la matriz.
Lo haces con $group
y $push
, y dado que está agrupando, querrá $first
para los demás campos del documento que desee:
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" }
}}
])
Tenga en cuenta también el $sort
se aplica tanto a "_id"
y el otro campo para ordenar. Esto es para que la clasificación se aplique por documento y es importante cuando los detalles del documento se vuelven a juntar en $group
.
Ahora el documento se ve igual que antes, pero esta vez los miembros de la matriz están ordenados.