Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB में ऐरे में पहले आइटम से मिलान करने वाले डॉक्यूमेंट्स कैसे खोजें?

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" }।
  1. - MongoDB में ऐरे को n एट्रिब्यूट वाले दस्तावेज़ों के मैप में बदलना

    MongoDB में $map और $arrayToObject का उपयोग करके ऐरे को ऑब्जेक्ट मैप में बदलना MongoDB एग्रीगेशन में $map और $arrayToObject ऑपरेटरों का उपयोग करके किसी ऐरे को की-वैल्यू मैप में बदला जा सकता है, जहां प्रत्येक दस्तावेज़ का एक फील्ड की बन जाता है। उदाहरण: संग्रह और दस्तावेज़ बनाना > db.demo398.inse

  1. - MongoDB में मानों की सरणी दिए जाने पर मिलते-जुलते दस्तावेज़ कैसे खोजें?

    विशिष्ट दस्तावेज़ों के लिए, MongoDB $in ऑपरेटर का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo511.insertOne({ListOfProject:[Library Management System,Hospital Management System]}); { acknowledged : true, insertedId : ObjectId(5e88473a987b6e0e9d18f585) } > db.demo511.insertOne(

  1. - MongoDB में विशिष्ट नेस्टेड डॉक्यूमेंट्स के लिए ऑब्जेक्ट्स की सरणी पर क्वेरी कैसे करें?

    ऑब्जेक्ट्स की सरणी के लिए नेस्टेड डॉक्यूमेंट्स पर क्वेरी करने के लिए find() का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo763.insertOne( { _id:1, CountryName:US, studentInformation: [ { StudentName:Chris }, { StudentName:David, StudentAge:22 } ] } ); { acknowledged : true, insertedId : 1 } f