MongoDB में संख्या-की (Numeric Key) वाले सबडॉक्यूमेंट एक्सेस करना
जब ऑब्जेक्ट की चाबी (की) संख्या हो (जैसे "1", "2"), तो ब्रैकेट नोटेशन object["1"] का उपयोग करें। डॉट नोटेशन object.1 काम नहीं करता।
कलेक्शन बनाएं और डॉक्यूमेंट इन्सर्ट करें
> db.accessSubDocumentDemo.insertOne({
"Details": {
"1": {"StudentLowerScore": "33", "StudentHoghScore": "55"},
"2": {"StudentLowerScore": "45", "StudentHoghScore": "65"},
"3": {"StudentLowerScore": "39", "StudentHoghScore": "91"},
"4": {"StudentLowerScore": "41", "StudentHoghScore": "85"}
}
});
{ "acknowledged": true, "insertedId": ObjectId("5cd3baf0edc6604c74817cd6") }
डॉक्यूमेंट देखें
>> db.accessSubDocumentDemo.find().pretty();
{
"_id": ObjectId("5cd3baf0edc6604c74817cd6"),
"Details": {
"1": {"StudentLowerScore": "33", "StudentHoghScore": "55"},
"2": {"StudentLowerScore": "45", "StudentHoghScore": "65"},
"3": {"StudentLowerScore": "39", "StudentHoghScore": "91"},
"4": {"StudentLowerScore": "41", "StudentHoghScore": "85"}
}
}
की "1" वाला सबडॉक्यूमेंट एक्सेस करें
> db.accessSubDocumentDemo.findOne().Details["1"];
{ "StudentLowerScore": "33", "StudentHoghScore": "55" }
क्यों ब्रैकेट नोटेशन जरूरी है
// गलत - सिंटैक्स एरर
db.accessSubDocumentDemo.findOne().Details.1;
// सही - ब्रैकेट नोटेशन
db.accessSubDocumentDemo.findOne().Details["1"];
// वेरिएबल में की होने पर
var key = "1";
db.accessSubDocumentDemo.findOne().Details[key];
क्वेरी में उपयोग करें
// की "1" वाले डॉक्यूमेंट खोजें जहां StudentLowerScore = "33"
db.accessSubDocumentDemo.find({"Details.1.StudentLowerScore": "33"})
नोट
- MongoDB में फ़ील्ड नाम स्ट्रिंग होते हैं, "1" स्ट्रिंग है न कि नंबर
- डॉट नोटेशन में संख्या से शुरू होने वाला पहचानकर्ता अमान्य है
- ब्रैकेट नोटेशन किसी भी वैध स्ट्रिंग की के लिए काम करता है