sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur sorterar man underdokument i matrisfältet?

MongoDB tillhandahåller inget sätt att göra detta direkt, men det finns en lösning som är att uppdatera dina dokument och använda $sort uppdatera operatorn för att sortera din array.

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

Du kan fortfarande använda .aggregate() metod så här:

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

Men det här är mindre effektivt om allt du vill är att sortera din array, och du borde definitivt inte göra det.

Du kan alltid göra den här klientsidan med .sort eller sorted funktion.



  1. Nu tillgänglig:Fullständigt värd MongoDB-instanser på AWS

  2. Redis - övervakning av minnesanvändning

  3. Ta reda på om en fråga använder ett index i MongoDB

  4. Hur man kör js-fil i mongo med vårdata