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

MongoDB में सरणी के अंदर मिलान करने वाला दस्तावेज़ कैसे प्राप्त करें?

MongoDB में सरणी के अंदर विशिष्ट शर्त पूरी करने वाले ऑब्जेक्ट को प्राप्त करने के लिए $elemMatch प्रोजेक्शन ऑपरेटर का उपयोग करें।

उदाहरण

सरणी वाले दस्तावेज़ बनाएं:

> db.getMatchingDocumentDemo.insertOne(
  {
    _id: 1,
    "UserDetails": [
      {"UserName": "John", "UserAge": 23}
    ]
  }
);
{ "acknowledged" : true, "insertedId" : 1 }

> db.getMatchingDocumentDemo.insertOne(
  {_id: 2, "UserDetails": [{"UserName": "Larry", "UserAge": 24}]}
);
{ "acknowledged" : true, "insertedId" : 2 }

दस्तावेज़ देखें:

> db.getMatchingDocumentDemo.find().pretty();
{ "_id" : 1, "UserDetails" : [ { "UserName" : "John", "UserAge" : 23 } ] }
{ "_id" : 2, "UserDetails" : [ { "UserName" : "Larry", "UserAge" : 24 } ] }

UserAge 24 वाले ऑब्जेक्ट वाली सरणी प्राप्त करें

> db.getMatchingDocumentDemo.find({UserDetails: {$elemMatch: {UserAge: 24}}});

आउटपुट:

{ "_id" : 2, "UserDetails" : [ { "UserName" : "Larry", "UserAge" : 24 } ] }

व्याख्या:

  • $elemMatch क्वेरी में - दस्तावेज़ फिल्टर करता है जहां सरणी में कम से कम एक तत्व सभी शर्तें पूरी करता है
  • यहां UserAge: 24 वाले तत्व वाला दस्तावेज़ लौटाया गया
  • पूरा दस्तावेज़ लौटता है, सरणी अनफिल्टर्ड रहती है

केवल मिलान करने वाला तत्व प्राप्त करें (प्रोजेक्शन)

db.getMatchingDocumentDemo.find(
  {},
  {UserDetails: {$elemMatch: {UserAge: 24}}}
)
{ "_id" : 2, "UserDetails" : [ { "UserName" : "Larry", "UserAge" : 24 } ] }

क्वेरी vs प्रोजेक्शन में अंतर:

उपयोगव्यवहार
क्वेरी में $elemMatchदस्तावेज़ फिल्टर करता है, पूरी सरणी लौटाता है
प्रोजेक्शन में $elemMatchसरणी को केवल मिलान करने वाले तत्व तक सीमित करता है

एकाधिक शर्तें

db.collection.find({
  arrayField: {$elemMatch: {field1: "value1", field2: {$gt: 10}}}
})

यह सुनिश्चित करता है कि एक ही सरणी तत्व दोनों शर्तें पूरी करे।

  1. - MongoDB दस्तावेज़ में सरणी आइटम कैसे प्राप्त करें?

    MongoDB दस्तावेज़ के अंदर सरणी (array) आइटम्स को एक्सेस करने के लिए डॉट (.) नोटेशन का उपयोग किया जाता है। यह MongoDB में नेस्टेड डेटा क्वेरी करने का सबसे सरल और सामान्य तरीका है। उदाहरण: छात्र विवरण संग्रह बनाना सबसे पहले, हम एक संग्रह बनाते हैं जिसमें छात्रों के नाम और अंक वाली सरणी वाले दस्तावेज़

  1. - MongoDB एग्रीगेशन में $slice का उपयोग करके सरणी की लंबाई कैसे प्राप्त करें?

    MongoDB एग्रीगेशन में सरणी की लंबाई (तत्व गणना) प्राप्त करने के लिए, $project चरण में $size ऑपरेटर का उपयोग करें। $slice सरणी का सबसेट निकालता है; लंबाई के लिए $size सही ऑपरेटर है। उदाहरण: विषय सरणी वाला दस्तावेज़ > db.demo382.insertOne({ Name : David, details : [ { SubjectName :

  1. - MongoDB में ऐरे इंटरसेक्शन का डेटा कैसे प्राप्त करें?

    MongoDB में ऐरे इंटरसेक्शन के लिए aggregate() में $setIntersection का उपयोग करें। नमूना डेटा बनाना db.demo625.insertOne( { Name: Robert, Marks: [60,75] } ); सभी दस्तावेज़ देखना db.demo625.find(); { _id : ObjectId(...), Name : John, Marks : [ 56, 98, 60 ] } { _id : ObjectId(...), Name : John, Mar