MongoDB में डॉट नोटेशन से नेस्टेड फ़ील्ड क्वेरी करना
एम्बेडेड डॉक्यूमेंट (सबडॉक्यूमेंट) के अंदर के फ़ील्ड खोजने के लिए डॉट नोटेशन (parentField.childField) का उपयोग करें।
कलेक्शन बनाएं और डॉक्यूमेंट इन्सर्ट करें
> db.searchInInnerDemo.insertOne({
"StudentFirstName": "Robert",
"StudentTechnicalDetails": {
"StudentBackEndTechnology": "MongoDB",
"StudentLanguage": "Java"
}
});
{ "acknowledged": true, "insertedId": ObjectId("5cd2dd89b64f4b851c3a13d2") }
> db.searchInInnerDemo.insertOne({
"StudentFirstName": "David",
"StudentTechnicalDetails": {
"StudentBackEndTechnology": "MySQL",
"StudentLanguage": "PHP"
}
});
{ "acknowledged": true, "insertedId": ObjectId("5cd2dda3b64f4b851c3a13d3") }
सभी डॉक्यूमेंट देखें
> db.searchInInnerDemo.find().pretty();
{
"_id": ObjectId("5cd2dd89b64f4b851c3a13d2"),
"StudentFirstName": "Robert",
"StudentTechnicalDetails": {
"StudentBackEndTechnology": "MongoDB",
"StudentLanguage": "Java"
}
}
{
"_id": ObjectId("5cd2dda3b64f4b851c3a13d3"),
"StudentFirstName": "David",
"StudentTechnicalDetails": {
"StudentBackEndTechnology": "MySQL",
"StudentLanguage": "PHP"
}
}
केस 1: इनर क्लास के एक प्रॉपर्टी से मैच करें
> db.searchInInnerDemo.find({"StudentTechnicalDetails.StudentBackEndTechnology": "MongoDB"}).pretty();
{
"_id": ObjectId("5cd2dd89b64f4b851c3a13d2"),
"StudentFirstName": "Robert",
"StudentTechnicalDetails": {
"StudentBackEndTechnology": "MongoDB",
"StudentLanguage": "Java"
}
}
केस 2: पूरे सबडॉक्यूमेंट से मैच करें (सभी फील्ड)
> db.searchInInnerDemo.find({
"StudentTechnicalDetails": {
"StudentBackEndTechnology": "MongoDB",
"StudentLanguage": "Java"
}
}).pretty();
{
"_id": ObjectId("5cd2dd89b64f4b851c3a13d2"),
"StudentFirstName": "Robert",
"StudentTechnicalDetails": {
"StudentBackEndTechnology": "MongoDB",
"StudentLanguage": "Java"
}
}
मुख्य अंतर
| क्वेरी प्रकार | व्यवहार |
|---|---|
| डॉट नोटेशन (केस 1) | केवल निर्दिष्ट फ़ील्ड मैच करता है, बाकी इग्नोर |
| पूरा सबडॉक्यूमेंट (केस 2) | सभी फील्ड एक्जैक्ट मैच होने चाहिए, क्रम भी |
बेहतर तरीका: $elemMatch (ऐरे के लिए)
अगर सबडॉक्यूमेंट ऐरे में हो तो $elemMatch उपयोग करें।