MongoDB non fornisce un modo per farlo immediatamente, ma esiste una soluzione alternativa che consiste nell'aggiornare i documenti e utilizzare $sort
aggiorna l'operatore per ordinare l'array.
db.collection.update_many({}, {"$push": {"topics": {"$each": [], "$sort": {"weight": -1}}}})
Puoi ancora usare .aggregate()
metodo come questo:
db.collection.aggregate([
{"$unwind": "$topics"},
{"$sort": {"_id": 1, "topics.weight": -1}},
{"$group": {"_id": "$_id", "topics": {"$push": "$topics"}}}
])
Ma questo è meno efficiente se tutto ciò che vuoi è ordinare il tuo array e sicuramente non dovresti farlo.
Puoi sempre fare questo lato client usando il .sort
o sorted
funzione.