MongoDB no proporciona una forma de hacer esto de manera inmediata, pero existe una solución alternativa que consiste en actualizar sus documentos y usar el $sort
operador de actualización para ordenar su matriz.
db.collection.update_many({}, {"$push": {"topics": {"$each": [], "$sort": {"weight": -1}}}})
Todavía puedes usar el .aggregate()
método como este:
db.collection.aggregate([
{"$unwind": "$topics"},
{"$sort": {"_id": 1, "topics.weight": -1}},
{"$group": {"_id": "$_id", "topics": {"$push": "$topics"}}}
])
Pero esto es menos eficiente si todo lo que desea es ordenar su matriz, y definitivamente no debería hacerlo.
Siempre puede hacer este lado del cliente usando .sort
o sorted
función.