आप इसे निम्नलिखित एकत्रीकरण के साथ कर सकते हैं:
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
}
}
]
);
सबसे पहले मैं एक अतिरिक्त फ़ील्ड "group_id" प्रोजेक्ट करता हूं जो parentId मान के आधार पर _id या parentId से भरा होता है। group_id फ़ील्ड का उपयोग समूह बनाने और कुल गणना करने के लिए किया जाता है। कुल_गणना पर समूह बनाना अंतिम चरण है।
जब आप mongoDb 3.4 का उपयोग कर रहे हों तो आप $graphLookup देख सकते हैं। लेकिन अभी के लिए मैं आपको पूर्व 3.4 एकत्रीकरण के साथ छोड़ देता हूं;-)