MongoDB सशर्त ऑपरेटर एक शर्त निर्दिष्ट करें जिसके लिए दस्तावेज़ फ़ील्ड का मान संगत होगा।
तुलना क्वेरी ऑपरेटर
- $eq (बराबर)
- $ne (बराबर नहीं)
- $gt (इससे अधिक)
- $lt (इससे कम)
- $gte (अधिक या बराबर)
- $lte (कम या बराबर)
- $in मानों की एक सरणी को परिभाषित करता है, जिनमें से एक में एक दस्तावेज़ फ़ील्ड होना चाहिए
- $निन उन मानों की एक सरणी को परिभाषित करता है जिनमें दस्तावेज़ फ़ील्ड नहीं होना चाहिए
उदाहरण के लिए, हमें वे सभी दस्तावेज़ मिलेंगे जिनका आयु कुंजी मान 30 से कम है:
<ब्लॉकक्वॉट>
db.users.find ({age: {$lt : 30}})
अन्य तुलना ऑपरेटरों का उपयोग समान होगा। उदाहरण के लिए, वही कुंजी, केवल 30 से अधिक:
<ब्लॉकक्वॉट>
db.users.find ({age: {$gt : 30}})
ध्यान दें कि यहां तुलना स्ट्रिंग के बजाय पूर्णांक प्रकारों पर की गई है। यदि कुंजी आयु स्ट्रिंग मानों का प्रतिनिधित्व करती है तो तुलना इन पंक्तियों पर की जानी चाहिए:db.users.find ({आयु:{$gt:"30"}}), लेकिन परिणाम वही होगा।
लेकिन आइए ऐसी स्थिति की कल्पना करें जहां हमें 30 से अधिक लेकिन 50 से कम आयु फ़ील्ड मान वाले सभी वॉल्यूम खोजने होंगे। इस मामले में, हम दो ऑपरेटरों को जोड़ सकते हैं:
<ब्लॉकक्वॉट>
db.users.find ({age: {$gt : 30, $lt: 50}})
हमें ऐसे उपयोगकर्ता मिलेंगे जिनकी आयु 22 वर्ष है:
<ब्लॉकक्वॉट>
db.users.find ({age: {$eq : 22}})
संक्षेप में, यह अगली क्वेरी की सादृश्यता है:
<ब्लॉकक्वॉट>
db.users.find ({age: 22})
रिवर्स ऑपरेशन - उन उपयोगकर्ताओं को खोजें जिनकी आयु 22 वर्ष नहीं है:
<ब्लॉकक्वॉट>
db.users.find ({age: {$ne : 22}})
$in ऑपरेटर संभावित अभिव्यक्तियों की एक सरणी को परिभाषित करता है और उन कुंजियों की खोज करता है जिनका मान सरणी में है:
<ब्लॉकक्वॉट>
db.users.find ({age: {$in : [22, 32]}})
इसके विपरीत, $nin ऑपरेटर संभावित अभिव्यक्तियों की एक सरणी को परिभाषित करता है और उन कुंजियों की खोज करता है जिनका मान इस सरणी में अनुपस्थित है:
<ब्लॉकक्वॉट>db.users.find ({आयु:{$nin :[22, 32]}})
लॉजिकल ऑपरेटर
लॉजिकल ऑपरेटरों को सैंपलिंग शर्तों पर निष्पादित किया जाता है:
- $या :दो शर्तों को जोड़ता है, और दस्तावेज़ को इनमें से किसी एक शर्त को पूरा करना होगा
- $और: दो शर्तों को जोड़ता है, और दस्तावेज़ को दोनों शर्तों को पूरा करना चाहिए
- $नहीं: दस्तावेज़ शर्त से मेल नहीं खाना चाहिए
- $न ही: दो शर्तों को जोड़ता है, और दस्तावेज़ को दोनों शर्तों को पूरा नहीं करना चाहिए
MongoDB नमूना ऑपरेटर
$या ऑपरेटर एक तार्किक OR संचालन का प्रतिनिधित्व करता है और कुंजी-मूल्य जोड़े के एक सेट को परिभाषित करता है जो एक दस्तावेज़ में मौजूद होना चाहिए। और अगर किसी दस्तावेज़ में कम से कम एक ऐसा की-वैल्यू पेयर है, तो यह इस क्वेरी से मेल खाता है और डेटाबेस से निकाला जाता है:
<ब्लॉकक्वॉट>
db.users.find ({$or : [{name: "Tom"}, {age: 22}]})
यह अभिव्यक्ति सभी दस्तावेजों को नाम =टॉम या उम्र =22 के साथ वापस कर देगी।
एक अन्य उदाहरण सभी दस्तावेज़ों को या तो नाम =टॉम और आयु =22 या "जर्मन" के साथ भाषा मानों के साथ लौटाएगा:
<ब्लॉकक्वॉट>
db.users.find ({name: "Tom", $or : [{age: 22}, {languages: "german"}]})
सशर्त ऑपरेटरों का उपयोग उप-अभिव्यक्तियों या उप-अभिव्यक्तियों में किया जा सकता है:
<ब्लॉकक्वॉट>
db.users.find ({$or : [{name: "Tom"}, {age: {$gte:30}}]})
इस मामले में हम उन सभी दस्तावेज़ों का चयन करते हैं जहां नाम ="टॉम" या आयु फ़ील्ड का मान 30 या उससे अधिक है।
ऑपरेटर $और
$and ऑपरेटर एक तार्किक संचालन और (तार्किक गुणन) का प्रतिनिधित्व करता है और मापदंड के एक सेट को परिभाषित करता है जिसे एक दस्तावेज़ को पूरा करना चाहिए। $ या ऑपरेटर के विपरीत, दस्तावेज़ को सभी निर्दिष्ट मानदंडों को पूरा करना चाहिए। उदाहरण के लिए:
<ब्लॉकक्वॉट>
db.users.find ({$and : [{name: "Tom"}, {age: 32}]})
यहां चयनित दस्तावेज़ों में टॉम नाम और उम्र 32 - ये दोनों विशेषताएं होनी चाहिए।
MongoDB सरणी खोज
कुछ ऑपरेटरों को सरणियों के साथ काम करने के लिए डिज़ाइन किया गया है:
- $सभी: मानों के एक सेट को परिभाषित करता है जो एक सरणी में मौजूद होना चाहिए
- $आकार: तत्वों की संख्या को परिभाषित करता है जो एक सरणी में होना चाहिए
- $elemMatch: उस स्थिति को निर्दिष्ट करता है जिससे सरणी में तत्वों को मेल खाना चाहिए
MongoDB $all
$all ऑपरेटर संभावित अभिव्यक्तियों की एक सरणी को परिभाषित करता है और इसके लिए आवश्यक है कि दस्तावेज़ों में अभिव्यक्तियों का संपूर्ण परिभाषित सेट हो। तदनुसार, इसका उपयोग सरणी को खोजने के लिए किया जाता है। उदाहरण के लिए, दस्तावेज़ों में भाषाओं की एक श्रृंखला होती है जो उपयोगकर्ता द्वारा बोली जाने वाली विदेशी भाषाओं को संग्रहीत करती है। और उन सभी लोगों को खोजने के लिए जो एक ही समय में अंग्रेजी और फ्रेंच दोनों बोलते हैं, हम निम्नलिखित अभिव्यक्ति का उपयोग कर सकते हैं:
<ब्लॉकक्वॉट>
db.users.find ({languages: {$all : ["english", "french"]}})
ऑपरेटर $elemMatch
$elemMatch ऑपरेटर आपको उन दस्तावेज़ों का चयन करने की अनुमति देता है जिनमें सरणियों में ऐसे तत्व होते हैं जो कुछ शर्तों के अंतर्गत आते हैं। उदाहरण के लिए, डेटाबेस में विशिष्ट पाठ्यक्रमों के लिए उपयोगकर्ता रेटिंग का संग्रह होने दें। आइए कुछ दस्तावेज़ जोड़ें:
<ब्लॉकक्वॉट>
db.grades.insertMany([{student: "Tom", courses:[{name: "Java", grade: 5}, {name: "MongoDB", grade: 4}]},
{student: "Alice", courses:[{name: "C++", grade: 3}, {name: "MongoDB", grade: 5}]}))
प्रत्येक दस्तावेज़ में एक सरणी होती है, जो बदले में नेस्टेड दस्तावेज़ों से बनी होती है।
अब हम MongoDB कोर्स के लिए 3 से ऊपर ग्रेड वाले छात्रों को ढूंढेंगे:
<ब्लॉकक्वॉट>
db.grades.find({courses: {$elemMatch: {name: "MongoDB", grade: {$gt: 3}}}})
ऑपरेटर $size
$size ऑपरेटर का उपयोग उन दस्तावेज़ों को खोजने के लिए किया जाता है जिनमें सरणियों में $size के मान के बराबर कई तत्व होते हैं। उदाहरण के लिए, आइए उन सभी दस्तावेज़ों को निकालें जहाँ लैग्यूज सरणी में दो तत्व हैं:
<ब्लॉकक्वॉट>
db.users.find ({languages: {$size:2}})
ऐसी क्वेरी, उदाहरण के लिए, निम्न दस्तावेज़ के अनुरूप होगी:
<ब्लॉकक्वॉट>
{"name": "Tom", "age": 32, languages: ["english", "german"]}
ऑपरेटर $मौजूद है
$मौजूद ऑपरेटर केवल उन्हीं दस्तावेजों को निकालने की अनुमति देता है जहां एक निश्चित कुंजी मौजूद है या अनुपस्थित है। उदाहरण के लिए, कंपनी की कुंजी वाले सभी दस्तावेज़ लौटाएं:
<ब्लॉकक्वॉट>
db.users.find ({company: {$exists:true}})
यदि हम $exist को असत्य पैरामीटर के रूप में निर्दिष्ट करते हैं, तो क्वेरी हमें केवल वे दस्तावेज़ लौटाएगी जिनमें कंपनी कुंजी नहीं है।
ऑपरेटर $type
$type ऑपरेटर केवल उन दस्तावेज़ों को निकालता है जहाँ एक निश्चित कुंजी का एक निश्चित प्रकार का मान होता है, जैसे, एक स्ट्रिंग या एक संख्या:
<ब्लॉकक्वॉट>
db.users.find ({age: {$type: "string"}})
> db.users.find ({age: {$type: "number"}})
ऑपरेटर $regex
$regex ऑपरेटर एक रेगुलर एक्सप्रेशन निर्दिष्ट करता है जिससे फ़ील्ड मान मेल खाना चाहिए . उदाहरण के लिए, फ़ील्ड नाम में आवश्यक रूप से "b" अक्षर होना चाहिए:
<ब्लॉकक्वॉट>
db.users.find ({name: {$regex: "b"}})
यह समझना महत्वपूर्ण है कि $regex केवल तार नहीं लेता है, लेकिन नियमित अभिव्यक्तियां, उदाहरण के लिए:नाम:{$regex:"om$"} - नाम का मान "ओम" के साथ समाप्त होना चाहिए।