MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como classificar subdocumentos no campo array?


O MongoDB não fornece uma maneira de fazer isso pronto para uso, mas há uma solução alternativa que é atualizar seus documentos e usar o $sort operador de atualização para classificar sua matriz.
db.collection.update_many({}, {"$push": {"topics": {"$each": [], "$sort": {"weight": -1}}}})

Você ainda pode usar o .aggregate() método assim:
db.collection.aggregate([
    {"$unwind": "$topics"}, 
    {"$sort": {"_id": 1, "topics.weight": -1}}, 
    {"$group": {"_id": "$_id", "topics": {"$push": "$topics"}}}
])

Mas isso é menos eficiente se tudo o que você deseja é classificar sua matriz, e você definitivamente não deve fazer isso.

Você sempre pode fazer este lado do cliente usando o .sort ou sorted função.