sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo ordenar subdocumentos en el campo de matriz?

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.