MongoDB में, db.collection.distinct() विधि एकल संग्रह या दृश्य में निर्दिष्ट फ़ील्ड के लिए अलग-अलग मान ढूंढती है और परिणामों को एक सरणी में लौटाती है।
अलग-अलग मान वे होते हैं जिनमें अनावश्यक डुप्लीकेट हटा दिए जाते हैं। विशिष्ट मूल्य अद्वितीय मूल्य हैं। उदाहरण के लिए, यदि आपके पास समान मान वाले 2 या 3 दस्तावेज़ हैं, तो distinct कमांड केवल एक मान लौटाएगा।
db.collection.distinct() distinct . के लिए शेल आवरण विधि है आदेश।
उदाहरण
मान लीजिए हमारे पास pets . नामक संग्रह है निम्नलिखित दस्तावेजों के साथ।
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
{ "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 }
{ "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 }
{ "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }
हम distinct() . का उपयोग कर सकते हैं विशिष्ट पालतू प्रकारों को वापस करने की विधि।
db.pets.distinct( "type" ) परिणाम:
[ "Bat", "Cat", "Dog" ]
तो भले ही चार कुत्ते और दो बिल्लियाँ हों, सरणी में केवल प्रत्येक में से एक होता है। distinct() विधि ने डुप्लिकेट मानों को हटा दिया।
मूल दस्तावेज़ में केवल एक बल्ला होता है और इसलिए distinct() विधि उसे नहीं बदलती है - डिडुप करने के लिए कोई डुप्लिकेट मान नहीं थे।
एम्बेडेड दस्तावेज़
एम्बेडेड फ़ील्ड से अलग मान प्राप्त करने के लिए आप डॉट नोटेशन का उपयोग कर सकते हैं
मान लीजिए हमारे पास products . नामक संग्रह है जिसमें निम्नलिखित दस्तावेज शामिल हैं:
{ "_id" : 1, "product" : { "name" : "Shirt", "color" : "White" }, "sizes" : [ "S", "M", "L" ] }
{ "_id" : 2, "product" : { "name" : "Shirt", "color" : "Green" }, "sizes" : [ "S", "M", "XL" ] }
{ "_id" : 3, "product" : { "name" : "Shirt", "color" : "White" }, "sizes" : [ "S", "M", "L" ] }
{ "_id" : 4, "product" : { "name" : "Shorts", "color" : "Green" }, "sizes" : [ "M", "XS" ] }
{ "_id" : 5, "product" : { "name" : "Shorts", "color" : "Brown" }, "sizes" : [ "S", "M" ] }
{ "_id" : 6, "product" : { "name" : "Cap", "color" : "Purple" }, "sizes" : [ "M" ] }
{ "_id" : 7, "product" : { "name" : "Shoes", "color" : "Brown" }, "sizes" : [ "S", "M", "L" ] }
{ "_id" : 8, "product" : { "name" : "Shirt", "color" : "White" }, "sizes" : [ "M", "L", "XL" ] }
{ "_id" : 9, "product" : { "name" : "Cap", "color" : "Green" }, "sizes" : [ "M", "L" ] } उत्पाद नामों के लिए अलग-अलग मान वापस करने के लिए हम निम्नलिखित क्वेरी का उपयोग कर सकते हैं।
db.products.distinct(
"product.name"
) परिणाम:
[ "Cap", "Shirt", "Shoes", "Shorts" ]
हम color . के लिए भी यही काम कर सकते हैं फ़ील्ड.
db.products.distinct(
"product.color"
) परिणाम:
[ "Brown", "Green", "Purple", "White" ]
एक सरणी से अलग मान प्राप्त करें
distinct() का उपयोग करने का तरीका यहां दिया गया है उपरोक्त सरणी से विशिष्ट मान प्राप्त करने की विधि।
db.products.distinct( "sizes" ) परिणाम:
[ "L", "M", "S", "XL", "XS" ]
distinct() का उपयोग करें एक प्रश्न के साथ
आप उन दस्तावेज़ों को निर्दिष्ट करने के लिए एक क्वेरी प्रदान कर सकते हैं जिनसे अलग-अलग मान प्राप्त करना है। ऐसा करने के लिए, फ़ील्ड के बाद क्वेरी जोड़ें।
उदाहरण:
db.products.distinct( "product.name", { sizes: "S" } ) परिणाम:
[ "Shirt", "Shoes", "Shorts" ]
अधिक जानकारी
db.collection.distinct() विधि collation को भी स्वीकार करती है पैरामीटर, जो आपको स्ट्रिंग तुलना के लिए भाषा-विशिष्ट नियमों को निर्दिष्ट करने की अनुमति देता है, जैसे अक्षर केस और उच्चारण चिह्नों के लिए नियम।
अधिक जानकारी के लिए MongoDB दस्तावेज़ देखें।