MongoDB में, $in
क्वेरी ऑपरेटर उन दस्तावेज़ों का चयन करता है जहाँ फ़ील्ड का मान निर्दिष्ट सरणी में किसी भी मान के बराबर होता है।
$in
क्वेरी ऑपरेटर को $in
. के साथ भ्रमित नहीं होना चाहिए एकत्रीकरण पाइपलाइन ऑपरेटर, जो एक बूलियन देता है जो दर्शाता है कि निर्दिष्ट मान सरणी में है या नहीं।
उदाहरण
मान लीजिए हमारे पास products
. नामक संग्रह है निम्नलिखित दस्तावेजों के साथ:
{ "_id" : 1, "prod" : "Shorts" } { "_id" : 2, "prod" : "Jeans", "sizes" : null } { "_id" : 3, "prod" : "Shirt", "sizes" : "L" } { "_id" : 4, "prod" : "Shirt", "sizes" : "M" } { "_id" : 5, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] } { "_id" : 6, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] } { "_id" : 7, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }
हम $in
. का उपयोग कर सकते हैं विशिष्ट _id
. के साथ केवल उन दस्तावेज़ों का चयन करने के लिए ऑपरेटर मान।
उदाहरण कोड:
db.products.find({
_id: { $in: [ 1, 2, 3 ] }
})
परिणाम:
{ "_id" : 1, "prod" : "Shorts" } { "_id" : 2, "prod" : "Jeans", "sizes" : null } { "_id" : 3, "prod" : "Shirt", "sizes" : "L" }
इस मामले में, हमें केवल वही दस्तावेज़ चाहिए थे जिनमें एक _id
. हो 1
. का मान , 2
, या 3
।
उदाहरण 2
यहाँ एक और उदाहरण है। इस बार हम $in
. का उपयोग करते हैं एक अलग क्षेत्र के खिलाफ।
db.products.find({
sizes: { $in: [ "L" ] }
})
परिणाम:
{ "_id" : 3, "prod" : "Shirt", "sizes" : "L" } { "_id" : 6, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] } { "_id" : 7, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }
इस उदाहरण में हमने $in
. लागू किया है sizes
. तक खेत।
इस मामले में, पहले दस्तावेज़ में एक स्ट्रिंग के रूप में मान था, जबकि अन्य दो दस्तावेज़ों में यह एक सरणी तत्व के रूप में था। किसी भी तरह, सभी मेल खाने वाले दस्तावेज़ लौटा दिए गए।
विभिन्न प्रकारों की तुलना का मूल्यांकन बीएसओएन तुलना क्रम के अनुसार किया जाता है।
एकत्रीकरण उदाहरण
$match
. का उपयोग करते समय हम उसी सिंटैक्स का उपयोग कर सकते हैं एकत्रीकरण पाइपलाइन ऑपरेटर।
उदाहरण कोड:
db.products.aggregate(
[
{ $match: { _id: { $in: [ 1, 2, 3 ] } } }
]
)
परिणाम:
{ "_id" : 1, "prod" : "Shorts" } { "_id" : 2, "prod" : "Jeans", "sizes" : null } { "_id" : 3, "prod" : "Shirt", "sizes" : "L" }
और यहाँ यह फिर से sizes
. की क्वेरी करते हुए है फ़ील्ड:
db.products.aggregate(
[
{ $match: { sizes: { $in: [ "L" ] } } }
]
)
परिणाम:
{ "_id" : 3, "prod" : "Shirt", "sizes" : "L" } { "_id" : 6, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] } { "_id" : 7, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }
रेगुलर एक्सप्रेशन
आप /pattern/
. फ़ॉर्म का उपयोग करके क्वेरी में रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं ।
उदाहरण:
db.products.find({
sizes: { $in: [ /^X/ ] }
})
परिणाम:
{ "_id" : 5, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] } { "_id" : 6, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] } { "_id" : 7, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }
इस उदाहरण में, मैं sizes
. वाले सभी दस्तावेज़ लौटाता हूं एक मान वाला फ़ील्ड जो या तो एक स्ट्रिंग है जो X
. से शुरू होता है या एक सरणी जहां कम से कम एक तत्व X
. से शुरू होता है ।