$setUnion ऑपरेटर के साथ एग्रीगेशन
किसी सरणी फील्ड से डुप्लिकेट मान हटाकर केवल अद्वितीय मान रखने के लिए, एग्रीगेशन पाइपलाइन में $setUnion ऑपरेटर का उपयोग करें। $setUnion एक सरणी लेता है और डुप्लिकेट-मुक्त सरणी लौटाता है (क्रम गारंटीकृत नहीं)।
उदाहरण: डुप्लिकेट वाले दस्तावेज़ डालना
> db.removeDuplicatesDemo.insertOne({"InstructorName":"Chris","InstructorAge":34,"InstructorSubject": ["Java","C","Java","C++","MongoDB","MySQL","MongoDB"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cb9d96c895c4fd159f80807") }
दस्तावेज़ देखना
> db.removeDuplicatesDemo.find().pretty();
आउटपुट (डुप्लिकेट Java, MongoDB):
एग्रीगेशन के साथ डुप्लिकेट हटाना
> db.removeDuplicatesDemo.aggregate([ ... { "$project": { ... "InstructorName": 1, ... "InstructorAge": 1, ... "InstructorSubject": { "$setUnion": [ "$InstructorSubject", [] ] } ... }} ... ]).pretty();आउटपुट (अद्वितीय मान, क्रम बदल सकता है):
व्याख्या:
{ "$setUnion": [ "$InstructorSubject", [] ] }फील्ड की सरणी को एक खाली सरणी के साथ यूनियन करता है, जिससे डुप्लिकेट हट जाते हैं। परिणाम एक नई सरणी होती है जिसमें केवल अद्वितीय मान होते हैं।नोट: यह ऑपरेशन केवल पढ़ने के लिए है (एग्रीगेशन)। मूल दस्तावेज़ को स्थायी रूप से अपडेट करने के लिए, आपको परिणाम को पढ़कर
updateके साथ लिखना होगा।