MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB $nin क्वेरी ऑपरेटर

MongoDB में, $nin क्वेरी ऑपरेटर उन दस्तावेज़ों का चयन करता है जहाँ फ़ील्ड का मान निर्दिष्ट सरणी में नहीं है या जहाँ फ़ील्ड मौजूद नहीं है।

उदाहरण

मान लीजिए हमारे पास products . नामक संग्रह है निम्नलिखित दस्तावेजों के साथ:

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }
{ "_id" : 4, "prod" : "Shirt", "sizes" : "L" }
{ "_id" : 5, "prod" : "Jeans", "sizes" : null }
{ "_id" : 6, "prod" : "Shorts" }

हम $nin . का उपयोग कर सकते हैं ऑपरेटर केवल उन दस्तावेज़ों का चयन करने के लिए जिनमें विशिष्ट _id . नहीं है मान।

उदाहरण कोड:

db.products.find({ 
  _id: { $nin: [ 1, 2, 3 ] } 
})

परिणाम:

{ "_id" : 4, "prod" : "Shirt", "sizes" : "L" }
{ "_id" : 5, "prod" : "Jeans", "sizes" : null }
{ "_id" : 6, "prod" : "Shorts" }

इस मामले में, हम केवल ऐसे दस्तावेज़ चाहते थे जो नहीं एक _id शामिल करें 1 . का मान , 2 , या 3

उदाहरण 2

यहाँ एक और उदाहरण है। इस बार हम $nin . का उपयोग करते हैं एक अलग क्षेत्र के खिलाफ।

db.products.find({ 
  sizes: { $nin: [ "L" ] } 
})

परिणाम:

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
{ "_id" : 5, "prod" : "Jeans", "sizes" : null }
{ "_id" : 6, "prod" : "Shorts" }

इस उदाहरण में हमने $nin . लागू किया है sizes . तक खेत।

ध्यान दें कि दस्तावेज़ 6 लौटा दिया गया था, भले ही उसका कोई sizes न हो खेत। यह बिल्कुल अपेक्षित है - यदि फ़ील्ड मौजूद नहीं है, तो इसे $nin में शामिल किया जाता है परिणाम।

बीएसओएन तुलना क्रम के अनुसार विभिन्न प्रकारों की तुलना का मूल्यांकन किया जाता है।

एकत्रीकरण उदाहरण

$match . का उपयोग करते समय हम उसी सिंटैक्स का उपयोग कर सकते हैं एकत्रीकरण पाइपलाइन ऑपरेटर।

उदाहरण कोड:

db.products.aggregate(
   [
     { $match: { _id: { $nin: [ 1, 2, 3 ] } } }
   ]
)

परिणाम:

{ "_id" : 4, "prod" : "Shirt", "sizes" : "L" }
{ "_id" : 5, "prod" : "Jeans", "sizes" : null }
{ "_id" : 6, "prod" : "Shorts" }

और यहाँ यह फिर से sizes . की क्वेरी करते हुए है फ़ील्ड:

db.products.aggregate(
   [
     { $match: { sizes: { $nin: [ "L" ] } } }
   ]
)

परिणाम:

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
{ "_id" : 5, "prod" : "Jeans", "sizes" : null }
{ "_id" : 6, "prod" : "Shorts" }

रेगुलर एक्सप्रेशन

आप /pattern/ . फ़ॉर्म का उपयोग करके क्वेरी में रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं ।

उदाहरण:

db.products.find({ 
  sizes: { $nin: [ /^X/ ] } 
})

परिणाम:

{ "_id" : 4, "prod" : "Shirt", "sizes" : "L" }
{ "_id" : 5, "prod" : "Jeans", "sizes" : null }
{ "_id" : 6, "prod" : "Shorts" }

इस उदाहरण में, मैं उन सभी दस्तावेज़ों को लौटाता हूँ जिनका sizes . नहीं है फ़ील्ड जो X . से शुरू होती है ।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. एकत्रीकरण प्रश्नों पर MongoDB का प्रदर्शन

  2. मोंगोडब में एकल क्वेरी के साथ कई मायने रखता है

  3. फ़ाइल भंडारण के रूप में MongoDB

  4. मोंगोडीबी:इंडेक्स ऑर्डर और क्वेरी ऑर्डर मेल खाना चाहिए?

  5. मैं MongoDB दस्तावेज़ फ़ील्ड को केवल तभी अपडेट करूं जब वे मौजूद न हों?