$addToSet ऑपरेटर से ऐरे में यूनिक वैल्यूज़ जोड़ें
$addToSet ऑपरेटर ऐरे में एक वैल्यू तभी जोड़ता है जब वह पहले से मौजूद न हो, इस प्रकार डुप्लिकेट से बचाता है। एग्रीगेशन में $addToSet एक्यूमुलेटर का उपयोग करके कई डॉक्यूमेंट्स के ऐरे वैल्यूज़ को एक यूनिक सेट में संयोजित किया जा सकता है।
उदाहरण: संग्रह बनाना
> db.getDistinctDemo.insertOne({"Values": [100, 200]});
{ "acknowledged": true, "insertedId": ObjectId("5cef69f9ef71edecf6a1f69d") }
> db.getDistinctDemo.insertOne({"Values": [300, 100]});
{ "acknowledged": true, "insertedId": ObjectId("5cef6a07ef71edecf6a1f69e") }
सभी डॉक्यूमेंट्स देखना
> db.getDistinctDemo.find().pretty();
{
"_id": ObjectId("5cef69f9ef71edecf6a1f69d"),
"Values": [100, 200]
}
{
"_id": ObjectId("5cef6a07ef71edecf6a1f69e"),
"Values": [300, 100]
}
एग्रीगेशन में $addToSet का उपयोग
सभी डॉक्यूमेंट्स के Values ऐरे को एक सेट में संयोजित करें (डुप्लिकेट हटाकर):
> db.getDistinctDemo.aggregate([
{
"$group": {
"_id": 0,
"MyValues": { "$addToSet": "$Values" }
}
}
]);
आउटपुट:
{ "_id": 0, "MyValues": [[300, 100], [100, 200]] }
नोट: यहां
$addToSetपूरे ऐरे को एलिमेंट के रूप में जोड़ता है, न कि ऐरे के अलग-अलग एलिमेंट्स को। यदि आप ऐरे के एलिमेंट्स को फ़्लैट करके यूनिक सेट चाहते हैं, तो पहले$unwindकरें फिर$addToSet।