sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB třídění na dětech

Můžete to udělat pomocí následující agregace:

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

Nejprve navrhnu další pole „group_id“, které je vyplněno _id nebo parentId v závislosti na hodnotě parentId. Pole group_id se používá k seskupení a celkovému počítání. Posledním krokem je seskupení na total_count.

Když používáte mongoDb 3.4, můžete se podívat na $graphLookup ale zatím vám nechávám agregaci před 3.4;-)




  1. Mongoose .save() se neukládá do databáze?

  2. Úvod do Spring Data MongoDB

  3. Nelze dotazovat mongoDB pomocí mongoose v node.js

  4. Mongoose – Agregace $match na základě hodnot výčtu