MongoDB में $setUnion से दो फील्ड्स के डिस्टिंक्ट वैल्यूज का सॉर्टेड ऐरे
दो फील्ड्स के डिस्टिंक्ट वैल्यूज को मिलाकर सॉर्टेड ऐरे प्राप्त करने के लिए एग्रीगेशन फ्रेमवर्क में $setUnion ऑपरेटर का उपयोग करें।
उदाहरण: कलेक्शन और डॉक्यूमेंट्स बनाना
> db.sortedArrayWithDistinctDemo.insertOne({ value1: 4, value2: 5});
{ "acknowledged" : true, "insertedId" : ObjectId("5cc690b99cb58ca2b005e666") }
> db.sortedArrayWithDistinctDemo.insertOne({value1: 5, value2: 6});
{ "acknowledged" : true, "insertedId" : ObjectId("5cc690b99cb58ca2b005e667") }
> db.sortedArrayWithDistinctDemo.insertOne({value1: 7, value2: 4});
{ "acknowledged" : true, "insertedId" : ObjectId("5cc690b99cb58ca2b005e668") }
सभी डॉक्यूमेंट्स देखना
> db.sortedArrayWithDistinctDemo.find().pretty();
आउटपुट:
{ "_id" : ObjectId("5cc690b99cb58ca2b005e666"), "value1" : 4, "value2" : 5 }
{ "_id" : ObjectId("5cc690b99cb58ca2b005e667"), "value1" : 5, "value2" : 6 }
{ "_id" : ObjectId("5cc690b99cb58ca2b005e668"), "value1" : 7, "value2" : 4 }
डिस्टिंक्ट वैल्यूज का सॉर्टेड ऐरे प्राप्त करना
> db.sortedArrayWithDistinctDemo.aggregate(
... [
... { "$group": {
... "_id": null,
... "value1": { "$push": "$value1" },
... "value2": { "$push": "$value2" }
... }},
... { "$project": {
... "_id": 0,
... "bothValues": { "$setUnion": [ "$value1", "$value2" ] }
... }}
... ]
... );
आउटपुट:
{ "bothValues" : [ 4, 5, 6, 7 ] }
व्याख्या:
$group- सभी डॉक्यूमेंट्स को एक ग्रुप में जोड़ता है, दोनों फील्ड्स के वैल्यूज को ऐरे में पुश करता है$setUnion- दोनों ऐरे के यूनियन को लेकर डुप्लीकेट हटाता है और सॉर्ट करता है$project- केवल परिणाम ऐरे लौटाता है
नोट: $setUnion स्वचालित रूप से परिणाम को सॉर्टेड ऑर्डर में लौटाता है।