MongoDB không cung cấp cách thực hiện điều này hiệu quả nhưng có một cách giải quyết là cập nhật tài liệu của bạn và sử dụng $sort
cập nhật toán tử để sắp xếp mảng của bạn.
db.collection.update_many({}, {"$push": {"topics": {"$each": [], "$sort": {"weight": -1}}}})
Bạn vẫn có thể sử dụng .aggregate()
phương pháp như thế này:
db.collection.aggregate([
{"$unwind": "$topics"},
{"$sort": {"_id": 1, "topics.weight": -1}},
{"$group": {"_id": "$_id", "topics": {"$push": "$topics"}}}
])
Nhưng điều này kém hiệu quả hơn nếu tất cả những gì bạn muốn là sắp xếp mảng của mình và bạn chắc chắn không nên làm điều đó.
Bạn luôn có thể thực hiện phía máy khách này bằng cách sử dụng .sort
hoặc sorted
chức năng.