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

Sorter arrayet i dokumentet med MongoDB

Jeg kan se problemet. Folk søger efter og finder dette stackoverflow-svar:

Det er forkert, da det aldrig "rekonstruerer" arrayet.

Det gør du med $group og $push , og da du grupperer, vil du have $first for de andre felter i det ønskede dokument:

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

Bemærk også $sort anvendes på både "_id" og det andet felt til at sortere. Dette er så sorteringen anvendes pr. dokument og er vigtig, når dokumentdetaljerne sættes sammen igen i $group .

Nu ser dokumentet ud som det gjorde, men denne gang er array-medlemmerne sorteret.




  1. CouchDB/Couchbase/MongoDB transaktionsemulering?

  2. Krav til brug af MongoDB-transaktioner

  3. Opdateringsarray inde i Mongo-dokumentet virker ikke

  4. Opretter forbindelse til ekstern redis-server