MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Classificação do MongoDB em filhos


Você pode fazer isso com a seguinte agregação:
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
      }
    }
  ]
);

Primeiro eu projeto um campo extra "group_id" que é preenchido com o _id ou o parentId dependendo do valor do parentId. O campo group_id é usado para agrupar e fazer uma contagem total. O último passo é agrupar no total_count.

Ao usar o mongoDb 3.4, você pode conferir $graphLookup mas por agora deixo-vos com a agregação pré 3.4;-)