MongoDB में सरणियों (arrays) को कुशलतापूर्वक क्वेरी करना डेटा को प्रभावी ढंग से प्रबंधित करने के लिए अत्यंत महत्वपूर्ण है। यह गाइड विभिन्न विधियों का व्यापक अवलोकन प्रदान करता है, जिससे आप उनके सरणी संदर्भों के आधार पर विशिष्ट दस्तावेज़ पुनः प्राप्त कर सकते हैं।
विषय-सूची
- MongoDB सरणियों को समझना
- विधि 1:
$elemMatch
ऑपरेटर का उपयोग करना - विधि 2:
$in
ऑपरेटर का उपयोग करना - विधि 3:
$all
ऑपरेटर का उपयोग करना - विधि 4:
$size
ऑपरेटर का उपयोग करना - विधि 5:
$exists
के साथ सरणी के अस्तित्व की जाँच करना - प्रदर्शन पर विचार
- निष्कर्ष
MongoDB सरणियों को समझना
MongoDB सरणियाँ एक दस्तावेज़ फ़ील्ड के भीतर मानों की क्रमित सूचियाँ संग्रहीत करती हैं। ये मान किसी भी डेटा प्रकार के हो सकते हैं। उदाहरण के लिए:
{
"_id": ObjectId("650b538f276a861a7423c79b"),
"name": "John Doe",
"skills": ["JavaScript", "MongoDB", "Node.js", "React"]
}
यहाँ, “skills” एक सरणी है। सरणी की सामग्री के आधार पर कुशलतापूर्वक क्वेरी करने के लिए विशिष्ट MongoDB ऑपरेटरों को समझना आवश्यक है।
विधि 1: $elemMatch
ऑपरेटर का उपयोग करना
$elemMatch
उन दस्तावेज़ों को खोजने के लिए आदर्श है जहाँ एक सरणी तत्व कई मानदंडों को पूरा करता है। यह जाँच करता है कि क्या कम से कम एक सरणी तत्व निर्दिष्ट शर्तों से मेल खाता है।
db.collection('users').find({
skills: {
$elemMatch: {
$regex: /java/i, // "java" के लिए केस-संवेदनशील मिलान
$exists: true
}
}
})
यह उन उपयोगकर्ताओं को ढूँढता है जिनके पास कम से कम एक कौशल है जिसमें “java” (केस-संवेदनशील नहीं) शामिल है।
विधि 2: $in
ऑपरेटर का उपयोग करना
$in
उन दस्तावेज़ों को कुशलतापूर्वक ढूँढता है जहाँ सरणी में दिए गए सेट से कम से कम एक तत्व होता है।
db.collection('users').find({
skills: { $in: ["JavaScript", "Python"] }
})
यह उन उपयोगकर्ताओं को पुनः प्राप्त करता है जिनके कौशल सरणी में “JavaScript” या “Python” है।
विधि 3: $all
ऑपरेटर का उपयोग करना
$all
उन दस्तावेज़ों को ढूँढता है जहाँ सरणी में क्रम की परवाह किए बिना *सभी* निर्दिष्ट तत्व होते हैं।
db.collection('users').find({
skills: { $all: ["JavaScript", "MongoDB"] }
})
यह उन उपयोगकर्ताओं को लौटाता है जिनकी कौशल सूची में “JavaScript” और “MongoDB” दोनों हैं।
विधि 4: $size
ऑपरेटर का उपयोग करना
$size
ऑपरेटर आपको सरणी की लंबाई के आधार पर दस्तावेज़ों को क्वेरी करने की अनुमति देता है।
db.collection('users').find({
skills: { $size: 3 }
})
यह उन उपयोगकर्ताओं को ढूँढता है जिनके पास ठीक तीन कौशल सूचीबद्ध हैं।
विधि 5: $exists
के साथ सरणी के अस्तित्व की जाँच करना
उन दस्तावेज़ों को खोजने के लिए जहाँ एक विशिष्ट सरणी फ़ील्ड मौजूद है, $exists
ऑपरेटर का उपयोग करें:
db.collection('users').find({ skills: { $exists: true } })
यह सभी दस्तावेज़ों को वापस कर देगा जिनके पास “skills” सरणी है, चाहे उसकी सामग्री कुछ भी हो।
प्रदर्शन पर विचार
बड़े डेटासेट के साथ इष्टतम प्रदर्शन के लिए, सरणी फ़ील्ड पर अनुक्रमणिका बनाएँ। बहु-कुंजी अनुक्रमणिका विशेष रूप से सरणियों के लिए उपयोगी हैं। हालाँकि, अनुक्रमणिका आकार और क्वेरी गति के बीच व्यापार-बंद पर सावधानीपूर्वक विचार करें। बहुत बड़ी सरणियों के लिए, वैकल्पिक डेटा मॉडलिंग दृष्टिकोणों पर विचार करें।
निष्कर्ष
MongoDB की सरणी क्वेरी करने की क्षमताएँ शक्तिशाली और बहुमुखी हैं। इन ऑपरेटरों में महारत हासिल करके, आप अपने संग्रहों से अपनी आवश्यक विशिष्ट डेटा को कुशलतापूर्वक पुनः प्राप्त कर सकते हैं। याद रखें कि उस ऑपरेटर को चुनें जो आपकी क्वेरी की विशिष्ट आवश्यकताओं के अनुकूल हो और उपयुक्त अनुक्रमण रणनीतियों के साथ प्रदर्शन को अनुकूलित करें।