MongoDB nie zapewnia sposobu na zrobienie tego po wyjęciu z pudełka, ale istnieje obejście, które polega na zaktualizowaniu dokumentów i użyciu $sort
operator aktualizacji, aby posortować tablicę.
db.collection.update_many({}, {"$push": {"topics": {"$each": [], "$sort": {"weight": -1}}}})
Nadal możesz używać .aggregate()
metoda taka:
db.collection.aggregate([
{"$unwind": "$topics"},
{"$sort": {"_id": 1, "topics.weight": -1}},
{"$group": {"_id": "$_id", "topics": {"$push": "$topics"}}}
])
Ale jest to mniej wydajne, jeśli wszystko, czego potrzebujesz, to posortowanie tablicy, i zdecydowanie nie powinieneś tego robić.
Zawsze możesz zrobić tę stronę klienta za pomocą .sort
lub sorted
funkcja.