MongoDB में डॉट नोटेशन के साथ ऐरे के पहले एलिमेंट को क्वेरी करना
MongoDB डॉट नोटेशन के साथ जीरो-बेस्ड इंडेक्स (arrayName.0.fieldName) का उपयोग करके ऐरे में पहले एलिमेंट के फील्ड्स को क्वेरी करने का समर्थन करता है।
नमूना डेटा बनाना
> db.matchingFirstItemInTheArrayDemo.insertOne(
{ "ClientDetails": [ { "ClientName": "Larry", "ClientAge": 28 } ] }
);
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7a5d26d78f205348bc636") }
> db.matchingFirstItemInTheArrayDemo.insertOne(
{ "ClientDetails": [ { "ClientName": "Chris", "ClientAge": 56 } ] }
);
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7a5f56d78f205348bc637") }
> db.matchingFirstItemInTheArrayDemo.insertOne(
{ "ClientDetails": [ { "ClientName": "Robert", "ClientAge": 46 } ] }
);
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7a6076d78f205348bc638") }
सभी डॉक्यूमेंट्स देखना
> db.matchingFirstItemInTheArrayDemo.find().pretty();
आउटपुट:
{ "_id" : ObjectId("5cd7a5d26d78f205348bc636"), "ClientDetails" : [ { "ClientName" : "Larry", "ClientAge" : 28 } ] }
{ "_id" : ObjectId("5cd7a5f56d78f205348bc637"), "ClientDetails" : [ { "ClientName" : "Chris", "ClientAge" : 56 } ] }
{ "_id" : ObjectId("5cd7a6076d78f205348bc638"), "ClientDetails" : [ { "ClientName" : "Robert", "ClientAge" : 46 } ] }
पहले ऐरे एलिमेंट के फील्ड द्वारा क्वेरी करना
उन डॉक्यूमेंट्स को खोजें जहां ClientDetails का पहला एलिमेंट ClientName = "Chris" है:
> db.matchingFirstItemInTheArrayDemo.find({ "ClientDetails.0.ClientName": "Chris" });
आउटपुट:
{ "_id" : ObjectId("5cd7a5f56d78f205348bc637"), "ClientDetails" : [ { "ClientName" : "Chris", "ClientAge" : 56 } ] }
व्याख्या
ClientDetails.0- ऐरे के पहले एलिमेंट (इंडेक्स 0) को संदर्भित करता है।ClientDetails.0.ClientName- उस पहले एलिमेंट के अंदरClientNameफील्ड तक पहुंचता है।- केवल वे डॉक्यूमेंट्स मिलान करते हैं जहां पहला एलिमेंट शर्त को पूरा करता है।
संबंधित पैटर्न
| पैटर्न | अर्थ |
|---|---|
arr.0.field | पहला एलिमेंट |
arr.1.field | दूसरा एलिमेंट |
arr.-1.field | समर्थित नहीं (अंतिम के लिए $slice या $arrayElemAt का उपयोग करें) |
arr.field | किसी भी एलिमेंट में फील्ड से मेल खाता है (पहले तक सीमित नहीं) |
मुख्य बिंदु
- निश्चित-स्थिति ऐरे एलिमेंट्स तक पहुंचने के लिए डॉट नोटेशन के साथ इंडेक्स का उपयोग करें।
- यह टॉप-लेवल ऐरे और नेस्टेड ऐरे दोनों के लिए काम करता है।
- ऐरे-ऑफ-ऑब्जेक्ट्स में किसी भी** एलिमेंट से मिलान करने के लिए, इंडेक्स छोड़ दें:
{ "ClientDetails.ClientName": "Chris" }।