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

MongoDB сортиране на деца

Можете да го направите със следното агрегиране:

db.collection.aggregate(
  [
    {
      $project: {
      group_id : { $cond : { if: { $ne: [ "$parentId", "" ] }, then: "$parentId", else: "$_id" }},
      count :1
      }
    },
    {
      $group: {
      _id : "$group_id",
      total_count : { $sum: "$count" }
      }
    },
    {
      $sort: {
      total_count : -1
      }
    }
  ]
);

Първо проектирам допълнително поле „group_id“, което се попълва с _id или parentId в зависимост от стойността на parentId. Полето group_id се използва за групиране и общ брой. Последната стъпка е групирането на total_count.

Когато използвате mongoDb 3.4, можете да разгледате $graphLookup но засега ви оставям с агрегацията преди 3.4;-)




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Вземете името на месеца от дата в SQL

  2. Как да изравните динамично поле с родителски документ - Spring данни Mongo DB

  3. mongoose премахва обект от вложен масив

  4. Скрит RFC3339 DateTime в дата в java

  5. Node.js и MongoDB Проблем с часовата зона UTC не се преобразува правилно от драйвер?