एग्रीगेशन पाइपलाइन का उपयोग करना
किसी फ़ील्ड के डुप्लिकेट मान (यानी वे मान जो एक से अधिक बार आते हैं) खोजने के लिए aggregate() के साथ $group और $match का उपयोग करें।
उदाहरण: नमूना डेटा
> db.findAllNonDistinctDemo.insertOne({"UserName":"John","UserAge":28});
{ "acknowledged" : true, "insertedId" : ObjectId("5c995078863d6ffd454bb647") }
> db.findAllNonDistinctDemo.insertOne({"UserName":"Larry","UserAge":21});
{ "acknowledged" : true, "insertedId" : ObjectId("5c995081863d6ffd454bb648") }
> db.findAllNonDistinctDemo.insertOne({"UserName":"Larry","UserAge":23});
{ "acknowledged" : true, "insertedId" : ObjectId("5c995089863d6ffd454bb649") }
> db.findAllNonDistinctDemo.insertOne({"UserName":"David","UserAge":22});
{ "acknowledged" : true, "insertedId" : ObjectId("5c995093863d6ffd454bb64a") }
> db.findAllNonDistinctDemo.insertOne({"UserName":"John","UserAge":26});
{ "acknowledged" : true, "insertedId" : ObjectId("5c99509d863d6ffd454bb64b") }
> db.findAllNonDistinctDemo.insertOne({"UserName":"Robert","UserAge":24});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9950a7863d6ffd454bb64c") }
> db.findAllNonDistinctDemo.insertOne({"UserName":"Robert","UserAge":25});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9950b1863d6ffd454bb64d") }
> db.findAllNonDistinctDemo.insertOne({"UserName":"Mike","UserAge":29});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9950bc863d6ffd454bb64e") }
एग्रीगेशन क्वेरी
> db.findAllNonDistinctDemo.aggregate([
{ "$group": { "_id": "$UserName", "Counter": { "$sum": 1 } } },
{ "$match": { "Counter": { "$gt": 1 } } }
]).pretty();
आउटपुट:
व्याख्या:
$group:UserNameद्वारा समूहित करता है और घटनाओं की गणना करता है।$match: केवल उन समूहों को फ़िल्टर करता है जहां गणना > 1 (यानी डुप्लिकेट)।विस्तार: डुप्लिकेट दस्तावेज़ों के पूर्ण विवरण प्राप्त करने के लिए, परिणामों को मूल संग्रह के साथ
$lookupका उपयोग करके जोड़ें या पहचाने गए नामों के साथfind({ UserName: { $in: ["Robert", "Larry", "John"] } })का उपयोग करें।