Eu vejo o problema. As pessoas estão procurando e encontrando esta resposta de stackoverflow:
Está errado, pois nunca "reconstrói" a matriz.
Você faz isso com
$group
e $push
, e como você está agrupando, você desejará $first
para os outros campos do documento que você deseja: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" }
}}
])
Observe também o
$sort
é aplicado ao "_id"
e o outro campo para classificar. Isso é para que a classificação seja aplicada por documento e é importante quando os detalhes do documento são reunidos novamente em $group
. Agora o documento tem a mesma aparência que tinha, mas desta vez os membros do array estão ordenados.