MongoDB में फील्ड मान की समानता जांचने के लिए $eq ऑपरेटर वैकल्पिक है - आप सीधे फील्ड: मान सिंटैक्स का उपयोग कर सकते हैं।
उदाहरण
कलेक्शन बनाएं:
> db.operatorDemo.insertOne({"StudentSubject":["MongoDB","MySQL","Java"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cef94eaef71edecf6a1f6a2") }
> db.operatorDemo.insertOne({"StudentSubject":["Java","C","C++"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cef94faef71edecf6a1f6a3") }
दस्तावेज़ देखें:
> db.operatorDemo.find().pretty();
{ "_id" : ObjectId("5cef94eaef71edecf6a1f6a2"), "StudentSubject" : [ "MongoDB", "MySQL", "Java" ] }
{ "_id" : ObjectId("5cef94faef71edecf6a1f6a3"), "StudentSubject" : [ "Java", "C", "C++" ] }
$eq के बिना समानता क्वेरी
> db.operatorDemo.find({StudentSubject: "MongoDB"});
आउटपुट:
{ "_id" : ObjectId("5cef94eaef71edecf6a1f6a2"), "StudentSubject" : [ "MongoDB", "MySQL", "Java" ] }
दोनों तरीके समान हैं:
// स्पष्ट $eq (वैकल्पिक)
db.collection.find({field: {$eq: "value"}})
// संक्षिप्त सिंटैक्स (अनुशंसित)
db.collection.find({field: "value"})
सरणी के साथ व्यवहार: जब फील्ड सरणी हो, तो MongoDB जांचता है कि क्या मान सरणी में मौजूद है। ऊपर के उदाहरण में "MongoDB" सरणी में है, इसलिए दस्तावेज़ मेल खाता है।
$eq कब उपयोगी है:
$in,$ninजैसे ऑपरेटर्स के साथ संयोजन में- जब क्वेरी प्रोग्रामेटिक रूप से बनाई जाती है और स्पष्टता चाहिए
$exprमें एग्रीगेशन पाइपलाइन के अंदर
सरल क्वेरी के लिए संक्षिप्त सिंटैक्स पठनीय और मानक है।