MongoDB में डॉट नोटेशन का उपयोग करके सरणी के भीतर नेस्टेड ऑब्जेक्ट क्वेरी करना
MongoDB में जब आपके पास ऑब्जेक्ट्स की सरणी हो, तो आप डॉट नोटेशन का उपयोग करके सरणी तत्वों के भीतर नेस्टेड फ़ील्ड्स को क्वेरी कर सकते हैं।
नमूना डेटा बनाना
> db.demo299.insertOne(
{
"id":100,
"Name":"Robert",
"details":[
{ "SubjectName":["C++","Python"] },
{ "SubjectName":["Spring","Hibernate"] }
]
}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5e4d685a5d93261e4bc9ea4b") }
> db.demo299.insertOne(
{
"id":101,
"Name":"Adam",
"details":[
{ "SubjectName":["Python","JSP"] },
{ "SubjectName":["Servlet","Operating System"] }
]
}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5e4d685b5d93261e4bc9ea4c") }
सभी दस्तावेज़ प्रदर्शित करना
> db.demo299.find();
आउटपुट:
{
"_id" : ObjectId("5e4d685a5d93261e4bc9ea4b"),
"id" : 100,
"Name" : "Robert",
"details" : [
{ "SubjectName" : [ "C++", "Python" ] },
{ "SubjectName" : [ "Spring", "Hibernate" ] }
]
}
{
"_id" : ObjectId("5e4d685b5d93261e4bc9ea4c"),
"id" : 101,
"Name" : "Adam",
"details" : [
{ "SubjectName" : [ "Python", "JSP" ] },
{ "SubjectName" : [ "Servlet", "Operating System" ] }
]
}
सरणी में नेस्टेड ऑब्जेक्ट क्वेरी करने की क्वेरी
details सरणी में किसी ऑब्जेक्ट के SubjectName सरणी में "Servlet" मान खोजें।
> db.demo299.find({"details.SubjectName":"Servlet"});
आउटपुट:
{
"_id" : ObjectId("5e4d685b5d93261e4bc9ea4c"),
"id" : 101,
"Name" : "Adam",
"details" : [
{ "SubjectName" : [ "Python", "JSP" ] },
{ "SubjectName" : [ "Servlet", "Operating System" ] }
]
}
व्याख्या
{"details.SubjectName":"Servlet"}- MongoDB स्वचालित रूप सेdetailsसरणी के प्रत्येक तत्व मेंSubjectNameसरणी के भीतर "Servlet" खोजता है।- यह "अनवाइंड" किए बिना सरणी के भीतर सरणी क्वेरी करने का सरल तरीका है।
- पूरा दस्तावेज़ लौटाया जाता है, केवल मिलान करने वाला सरणी तत्व नहीं।
नोट
यदि आपको केवल मिलान करने वाला सरणी तत्व चाहिए, तो $elemMatch प्रोजेक्शन या aggregation pipeline में $filter का उपयोग करें।