sql >> Databasteknik >  >> NoSQL >> MongoDB

Sortera arrayen i dokumentet med MongoDB

Jag ser problemet. Människor söker efter och hittar detta stackoverflow-svar:

Det är fel, eftersom det aldrig "rekonstruerar" arrayen.

Det gör du med $group och $push , och eftersom du grupperar vill du ha $first för de andra fälten i dokumentet du vill ha:

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" }
   }}
])

Observera även $sort tillämpas på både "_id" och det andra fältet att sortera. Detta är så att sorteringen tillämpas per dokument och är viktig när dokumentdetaljerna sätts ihop igen i $group .

Nu ser dokumentet ut som det gjorde, men den här gången är arraymedlemmarna sorterade.




  1. Node.js + Mongoose fungerar lokalt, men inte på Heroku

  2. Ember, Ember Data och MongoDB:s _id

  3. Mongoose-schemareferens och odefinierad typ 'ObjectID'

  4. Kan en $text-sökning utföra en partiell matchning