MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB-Sortierung von Kindern

Sie können dies mit der folgenden Aggregation tun:

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

Zuerst projiziere ich ein zusätzliches Feld "group_id", das mit der _id oder der parentId gefüllt wird, abhängig vom parentId-Wert. Das Feld group_id wird verwendet, um zu gruppieren und eine Gesamtzählung vorzunehmen. Der letzte Schritt ist die Gruppierung nach total_count.

Wenn Sie mongoDb 3.4 verwenden, können Sie sich $graphLookup ansehen aber jetzt überlasse ich es dir mit der Pre-3.4-Aggregation;-)