MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Trier le tableau dans le document avec MongoDB

Je vois le problème. Les gens recherchent et trouvent cette réponse stackoverflow :

C'est faux, car il ne "reconstruit" jamais le tableau.

Vous faites cela avec $group et $push , et puisque vous regroupez, vous voudrez $first pour les autres champs du document souhaité :

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" }
   }}
])

Notez également le $sort est appliqué à la fois au "_id" et l'autre champ à trier. C'est ainsi que le tri est appliqué par document et est important lorsque les détails du document sont regroupés dans $group .

Maintenant, le document a le même aspect qu'avant, mais cette fois, les membres du tableau sont triés.