MongoDB में $setUnion का उपयोग करके फ़ील्ड्स को ऐरे में मर्ज करना
जब आपको एक ही दस्तावेज़ के अलग-अलग फ़ील्ड्स के मानों को एक सिंगल ऐरे में यूनिक मानों के साथ जोड़ना हो, तो $setUnion ऑपरेटर का उपयोग किया जाता है।
सैंपल डेटा बनाना
> db.demo244.insertOne({"Value1":10,"Value2":20});
{ "acknowledged" : true, "insertedId" : ObjectId("5e4582e31627c0c63e7dba63") }
> db.demo244.insertOne({"Value1":20,"Value2":30});
{ "acknowledged" : true, "insertedId" : ObjectId("5e4582f11627c0c63e7dba64") }
सभी दस्तावेज़ देखना
> db.demo244.find();
आउटपुट:
{ "_id" : ObjectId("5e4582e31627c0c63e7dba63"), "Value1" : 10, "Value2" : 20 }
{ "_id" : ObjectId("5e4582f11627c0c63e7dba64"), "Value1" : 20, "Value2" : 30 }
एग्रीगेशन पाइपलाइन: ग्रुप और प्रोजेक्ट
> db.demo244.aggregate([
{ "$group": {
"_id": null,
"v1": { "$addToSet": "$Value1" },
"v2": { "$addToSet": "$Value2" }
}},
{ "$project": {
"AllValues": { "$setUnion": [ "$v1", "$v2" ] }
}}
]);
आउटपुट:
{ "_id" : null, "AllValues" : [ 10, 20, 30 ] }
चरण-दर-चरण स्पष्टीकरण
$group- सभी दस्तावेज़ों को सिंगल ग्रुप में जोड़ता है (_id: null)$addToSet- प्रत्येक फ़ील्ड के यूनिक मानों का ऐरे बनाता है (डुप्लिकेट हटाता है)$setUnion- दो ऐरे को मर्ज करके यूनिक मानों का सेट बनाता है$project- अंतिम आउटपुट फॉर्मेट निर्दिष्ट करता है
वैकल्पिक दृष्टिकोण
यदि दस्तावेज़ प्रति एक ही ऐरे चाहिए, तो $concatArrays + $reduce का उपयोग करें।