आप निम्न एकत्रीकरण पाइपलाइन ऑपरेशन चलाकर आसानी से डुप्लिकेट की पहचान कर सकते हैं:
db.collection.aggregate([
{
"$group": {
"_id": { "foreing": "$foreing", "value": "$value" },
"uniqueIds": { "$addToSet": "$_id" },
"count": { "$sum": 1 }
}
},
{ "$match": { "count": { "$gt": 1 } } }
])
$group
पहले चरण में ऑपरेटर का उपयोग दस्तावेज़ों को foreign
. द्वारा समूहित करने के लिए किया जाता है और value
कुंजी मान और फिर _id
. की एक सरणी बनाएं प्रत्येक समूहीकृत दस्तावेज़ के लिए uniqueIds
. के रूप में मान $addToSet
. का उपयोग करके फ़ील्ड ऑपरेटर। यह आपको प्रत्येक समूह के लिए अद्वितीय अभिव्यक्ति मानों की एक सरणी देता है। $sum
. के साथ बाद के पाइपलाइन चरणों में उपयोग करने के लिए समूहीकृत दस्तावेज़ों की कुल संख्या प्राप्त करें ऑपरेटर।
दूसरे पाइपलाइन चरण में, $match
. का उपयोग करें ऑपरेटर 1 की गिनती के साथ सभी दस्तावेज़ों को फ़िल्टर करेगा। फ़िल्टर किए गए दस्तावेज़ अद्वितीय अनुक्रमणिका कुंजियों का प्रतिनिधित्व करते हैं।
शेष दस्तावेज़ संग्रह में वे होंगे जिनमें जोड़ी के लिए डुप्लीकेट कुंजी मान हैं foreing
&value
।