sql >> Database >  >> NoSQL >> MongoDB

Sorteer de array in het document met MongoDB

Ik zie het probleem. Mensen zoeken en vinden dit stackoverflow-antwoord:

Het is verkeerd, omdat het de array nooit "reconstrueert".

Dat doe je met $group en $push , en aangezien je aan het groeperen bent, wil je $first voor de andere velden in het gewenste document:

db.TrafficStatistic.aggregate([
   { "$unwind": "$statistic" },
   { "$sort": { "_id": 1, "statistic.data.desktop.users": 1 } },
   { "$group": {
       "_id": "$_id",
       "monthStart" : { "$first": "$monthStart" },
       "monthEnd" : { "$first": "$monthEnd" },
       "date" : { "$first": "$date" },
       "statistic": { "$push": "$statistic" }
   }}
])

Let ook op de $sort wordt toegepast op zowel de "_id" en het andere veld om te sorteren. Dit is zo dat de sortering per document wordt toegepast en is belangrijk wanneer de documentdetails weer bij elkaar worden gezet in $group .

Nu ziet het document er hetzelfde uit als het deed, maar deze keer zijn de arrayleden gesorteerd.




  1. MongoDB:output 'id' in plaats van '_id'

  2. Kan MongoClient niet importeren

  3. Hoe een tekenreeks te matchen die bestaat uit een speciaal teken zoals een koppelteken en spaties

  4. Hoe BSON::Timestamp naar ruby-tijd te converteren en vice versa