MongoDB, एक NoSQL डॉक्यूमेंट डेटाबेस, डॉक्यूमेंट्स के अंदर या कई डॉक्यूमेंट्स में फील्ड्स की तुलना करने के लिए बहुमुखी तरीके प्रदान करता है। यह गाइड इन तकनीकों का पता लगाता है, जो विभिन्न कौशल स्तरों और उपयोग के मामलों को पूरा करता है।
विषय सूची
- MongoDB क्वेरी भाषा का उपयोग करना
- फील्ड तुलना के लिए एग्रीगेशन फ़्रेमवर्क
- फील्ड तुलना के लिए मोंगो शेल का उपयोग करना
- उन्नत तुलना तकनीकें
- प्रदर्शन पर विचार
- निष्कर्ष
- अक्सर पूछे जाने वाले प्रश्न
MongoDB क्वेरी भाषा का उपयोग करना
सबसे सरल तरीके में आपके एप्लिकेशन कोड के भीतर MongoDB की क्वेरी भाषा शामिल है। यह सीधे फील्ड तुलना के आधार पर डॉक्यूमेंट्स को फ़िल्टर करता है।
एक products
संग्रह पर विचार करें:
[
{ "_id" : ObjectId("..."), "price" : 10, "discount" : 5 },
{ "_id" : ObjectId("..."), "price" : 20, "discount" : 2 },
{ "_id" : ObjectId("..."), "price" : 30, "discount" : 0 }
]
उत्पादों को खोजने के लिए जहाँ price
> discount
, क्वेरी ऑपरेटर के भीतर एक सीधी तुलना काम नहीं करेगी। इसके बजाय, $expr
ऑपरेटर का उपयोग करें:
db.products.find( { $expr: { $gt: [ "$price", "$discount" ] } } )
$expr
क्वेरी चरण के भीतर एग्रीगेशन पाइपलाइन अभिव्यक्तियों के मूल्यांकन को सक्षम बनाता है, जो इंट्रा-डॉक्यूमेंट फील्ड तुलना के लिए महत्वपूर्ण है।
फील्ड तुलना के लिए एग्रीगेशन फ़्रेमवर्क
एग्रीगेशन फ़्रेमवर्क एक शक्तिशाली, लचीला तरीका प्रदान करता है, खासकर जटिल तुलना या गणना के लिए। यह फ़िल्टरिंग से पहले परिष्कृत तर्क और परिवर्तन की अनुमति देता है।
उत्पादों को खोजने और छूट के बाद अंतिम मूल्य की गणना करने के लिए:
db.products.aggregate([
{
$project: {
_id: 1,
price: 1,
discount: 1,
finalPrice: { $subtract: [ "$price", "$discount" ] }
}
},
{
$match: {
finalPrice: { $gt: 15 }
}
}
])
यह पाइपलाइन finalPrice
को प्रोजेक्ट करती है और फिर इसके आधार पर फ़िल्टर करती है।
फील्ड तुलना के लिए मोंगो शेल का उपयोग करना
मोंगो शेल क्वेरी और एग्रीगेशन का परीक्षण करने के लिए एक इंटरैक्टिव वातावरण प्रदान करता है। उपरोक्त विधियाँ शेल के भीतर सीधे काम करती हैं।
> db.products.find( { $expr: { $gt: [ "$price", "$discount" ] } } )
उन्नत तुलना तकनीकें
डॉक्यूमेंट्स में फील्ड्स की तुलना करने के लिए तुलना करने से पहले डॉक्यूमेंट्स को जोड़ने के लिए $lookup
या $group
के साथ एग्रीगेशन की आवश्यकता होती है। विभिन्न डेटा प्रकारों को संभालने के लिए संगतता सुनिश्चित करना आवश्यक है; स्पष्ट प्रकार की कास्टिंग की आवश्यकता हो सकती है।
प्रदर्शन पर विचार
जबकि $expr
ओवरहेड जोड़ता है, यह अक्सर आवश्यक होता है। बड़े डेटासेट के लिए, क्वेरी अनुकूलन महत्वपूर्ण बना रहता है। प्रासंगिक फ़ील्ड को अनुक्रमित करने से प्रदर्शन में काफी सुधार होता है।
निष्कर्ष
MongoDB फ़ील्ड तुलना के लिए विभिन्न तरीके प्रदान करता है। $expr
के साथ क्वेरी भाषा सरल इंट्रा-डॉक्यूमेंट तुलना के लिए उपयुक्त है, जबकि एग्रीगेशन फ़्रेमवर्क जटिल परिदृश्यों और गणनाओं में उत्कृष्टता प्राप्त करता है। मोंगो शेल परीक्षण और प्रयोग को सुविधाजनक बनाता है।
अक्सर पूछे जाने वाले प्रश्न
- क्या मैं विभिन्न दस्तावेज़ों में फ़ील्ड की तुलना कर सकता हूँ?
$lookup
या$group
के साथ एग्रीगेशन का उपयोग करें। - अगर मुझे विभिन्न डेटा प्रकारों के फ़ील्ड की तुलना करने की आवश्यकता है तो क्या होगा? डेटा प्रकार संगतता सुनिश्चित करें; स्पष्ट प्रकार की कास्टिंग आवश्यक हो सकती है।
$expr
के उपयोग के लिए क्या प्रदर्शन निहितार्थ हैं? हाँ, लेकिन यह अक्सर आवश्यक लचीलापन प्रदान करता है। बड़े डेटासेट के लिए क्वेरी को अनुकूलित करें।