sql >> Base de Datos >  >> NoSQL >> MongoDB

Ordenar la matriz en el documento con MongoDB

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.