MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Classifique a matriz no documento com o MongoDB


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.