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

Comment trier les sous-documents dans le champ tableau ?

MongoDB ne fournit pas un moyen de le faire immédiatement, mais il existe une solution de contournement qui consiste à mettre à jour vos documents et à utiliser le $sort opérateur de mise à jour pour trier votre tableau.

db.collection.update_many({}, {"$push": {"topics": {"$each": [], "$sort": {"weight": -1}}}})

Vous pouvez toujours utiliser le .aggregate() méthode comme celle-ci :

db.collection.aggregate([
    {"$unwind": "$topics"}, 
    {"$sort": {"_id": 1, "topics.weight": -1}}, 
    {"$group": {"_id": "$_id", "topics": {"$push": "$topics"}}}
])

Mais c'est moins efficace si tout ce que vous voulez, c'est trier votre tableau, et vous ne devriez certainement pas le faire.

Vous pouvez toujours faire ce côté client en utilisant le .sort ou sorted fonction.