सरणी फ़ील्ड पर विशिष्ट मान प्राप्त करना
किसी सरणी फ़ील्ड के सभी दस्तावेज़ों में विशिष्ट (Distinct) मान प्राप्त करने के लिए distinct() कमांड का उपयोग करें। यह फ़ील्ड पर इंडेक्स होने पर भी काम करता है।
उदाहरण: संग्रह बनाना
> db.distinctAggregation.insertOne({"UserName":"Larry","UserPost":["Hi","Hello"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5c98aefb330fd0aa0d2fe4c6") }
> db.distinctAggregation.insertOne({"UserName":"Chris","UserPost":["Hi","Good Morning"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5c98af0a330fd0aa0d2fe4c7") }
> db.distinctAggregation.insertOne({"UserName":"Robert","UserPost":["Awesome"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5c98af1e330fd0aa0d2fe4c8") }
डेटा देखना
> db.distinctAggregation.find().pretty();
आउटपुट:
सरणी फ़ील्ड पर इंडेक्स बनाना (वैकल्पिक)
> db.distinctAggregation.ensureIndex({"UserPost":1}); { "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }विशिष्ट मान प्राप्त करना
> db.distinctAggregation.distinct("UserPost");आउटपुट:
[ "Awesome", "Good Morning", "Hello", "Hi" ]मुख्य बिंदु:
distinct()कमांड स्वचालित रूप से सरणी को अनविंड (Unwind) करती है और सभी दस्तावेज़ों में उस फ़ील्ड के अद्वितीय मान लौटाती है। परिणाम डिफ़ॉल्ट रूप से क्रमबद्ध नहीं होते; क्रमबद्ध करने के लिए.sort()जोड़ें।