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.