sql >> Base de Datos >  >> NoSQL >> MongoDB

Clasificación de MongoDB en niños

Puedes hacerlo con la siguiente agregación:

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

Primero, proyecto un campo adicional "group_id" que se completa con _id o parentId según el valor de parentId. El campo group_id se usa para agrupar y hacer un recuento total. El último paso es agrupar en total_count.

Cuando usa mongoDb 3.4, puede consultar $graphLookup pero por ahora los dejo con la agregación previa a la 3.4;-)