MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie sortiert man Unterdokumente im Array-Feld?

MongoDB bietet keine Möglichkeit, dies standardmäßig zu tun, aber es gibt eine Problemumgehung, die darin besteht, Ihre Dokumente zu aktualisieren und den $sort zu verwenden Update-Operator, um Ihr Array zu sortieren.

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

Sie können immer noch .aggregate() verwenden Methode wie folgt:

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

Dies ist jedoch weniger effizient, wenn Sie nur Ihr Array sortieren möchten, und das sollten Sie definitiv nicht tun.

Sie können dies immer clientseitig mit .sort tun oder sorted Funktion.