MongoDB में नेस्टेड सरणी फ़ील्ड में डुप्लिकेट पहचानना
गहरी नेस्टेड सरणी में किसी फ़ील्ड के डुप्लिकेट मान ढूंढने के लिए: 1) $unwind से सरणी को समतल करें, 2) $group द्वारा गिनें, 3) $match से गिनती > 1 फ़िल्टर करें।
नमूना डेटा: 2-स्तरीय नेस्टिंग
> db.demo347.insertOne({details: {details1: [{Name: "Chris", Age: 21}]}});
{ "acknowledged": true, "insertedId": ObjectId("5e5532eaf8647eb59e5620af") }
> db.demo347.insertOne({details: {details1: [{Name: "David", Age: 22}]}});
{ "acknowledged": true, "insertedId": ObjectId("5e55330af8647eb59e5620b0") }
> db.demo347.insertOne({details: {details1: [{Name: "Chris", Age: 21}]}}); // डुप्लिकेट Chris
{ "acknowledged": true, "insertedId": ObjectId("5e55331cf8647eb59e5620b1") }
एग्रीगेशन: डुप्लिकेट Name ढूंढना
> db.demo347.aggregate([
{$unwind: "$details"},
{$unwind: "$details.details1"},
{$group: {_id: "$details.details1.Name", count: {$sum: 1}}},
{$match: {_id: {$ne: null}, count: {$gt: 1}}}
]);
परिणाम
{ "_id": "Chris", "count": 2 }
"Chris" दो बार आता है (दो अलग-अलग दस्तावेज़ों में)। $unwind प्रत्येक स्तर को समतल करता है, $group Name द्वारा गिनता है, $match केवल गिनती > 1 रखता है। यह पैटर्न किसी भी गहराई पर डुप्लिकेट पहचान के लिए काम करता है।