जबकि .distinct() किसी फ़ील्ड के लिए विशिष्ट मान प्राप्त करने के लिए अच्छी तरह से काम करता है, वास्तव में घटनाओं की संख्या प्राप्त करने के लिए, यह एकत्रीकरण ढांचे के लिए बेहतर अनुकूल है:
Collection.aggregate([
{ "$group": {
"_id": "$field",
"count": { "$sum": 1 }
}}
],function(err,result) {
});
साथ ही .distinct() विधि "सार" करती है जहां से निर्दिष्ट "विशिष्ट" फ़ील्ड वास्तव में एक सरणी के भीतर है। इस मामले में आपको $unwind . पर कॉल करने की आवश्यकता है सरणी तत्वों को यहां संसाधित करने के लिए सबसे पहले:
Collection.aggregate([
{ "$unwind": "$array" },
{ "$group": {
"_id": "$array.field",
"count": { "$sum": 1 }
}}
],function(err,result) {
});
तो मुख्य काम मूल रूप से $group . में किया जाता है क्षेत्र मूल्यों पर "समूहीकरण" द्वारा, जिसका अर्थ "विशिष्ट" जैसा ही है। $sum एक ग्रुपिंग ऑपरेटर है जो इस मामले में सिर्फ 1 जोड़ता है उस संग्रह के लिए फ़ील्ड में उस मान की प्रत्येक घटना के लिए।