MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come ordinare i documenti secondari nel campo dell'array?

MongoDB non fornisce un modo per farlo immediatamente, ma esiste una soluzione alternativa che consiste nell'aggiornare i documenti e utilizzare $sort aggiorna l'operatore per ordinare l'array.

db.collection.update_many({}, {"$push": {"topics": {"$each": [], "$sort": {"weight": -1}}}})

Puoi ancora usare .aggregate() metodo come questo:

db.collection.aggregate([
    {"$unwind": "$topics"}, 
    {"$sort": {"_id": 1, "topics.weight": -1}}, 
    {"$group": {"_id": "$_id", "topics": {"$push": "$topics"}}}
])

Ma questo è meno efficiente se tutto ciò che vuoi è ordinare il tuo array e sicuramente non dovresti farlo.

Puoi sempre fare questo lato client usando il .sort o sorted funzione.