sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB sorterar på barn

Du kan göra det med följande sammanställning:

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

Först projicerar jag ett extra fält "group_id" som fylls med _id eller parentId beroende på parentId-värdet. Group_id-fältet används för att gruppera och göra en total räkning. Sista steget är att gruppera på total_count.

När du använder mongoDb 3.4 kan du kolla in $graphLookup men för nu lämnar jag dig med pre 3.4-aggregationen;-)




  1. Aggregationsfilter efter $lookup

  2. Fråga efter datum med Mongo Spring-data vs Mongos konsol (datum)

  3. Lyssna efter ändringar i redis-listan

  4. mongodb server-side javascript är klient-side faktiskt?