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
. से शुरू होती है ।