MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Сортирайте масива в документа с MongoDB

Виждам проблема. Хората търсят и намират този отговор на stackoverflow:

Грешно е, тъй като никога не „реконструира“ масива.

Правите това с $group и $push , и тъй като групирате, ще искате $first за другите полета в документа, който искате:

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

Обърнете внимание и на $sort се прилага както към "_id" и другото поле за сортиране. Това е така, че сортирането се прилага за всеки документ и е важно, когато детайлите на документа се събират обратно в $group .

Сега документът изглежда по същия начин, но този път членовете на масива са сортирани.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да използвате $query, $hint или $explain от Java

  2. Работа със специални знаци в колекция Mongo

  3. Как да използвате криптиране за защита на данните на MongoDB

  4. Имената на полетата FieldPath не могат да съдържат '.' когато се опитвате да използвате AGGREGATE

  5. Групирайте Mongo документи по id и вземете най-новия документ по времево клеймо