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

MongoDB में ऑब्जेक्ट्स के ऐरे में _id द्वारा खोजना

MongoDB में एग्रीगेशन और $unwind का उपयोग करके नेस्टेड ऐरे में _id द्वारा खोजना

MongoDB में ऑब्जेक्ट्स के ऐरे के भीतर किसी विशिष्ट _id वाले एलिमेंट को खोजने के लिए $unwind के साथ एग्रीगेशन पाइपलाइन का उपयोग करें। नियमित find() पूरे दस्तावेज़ लौटाता है, न कि केवल मिलान करने वाला ऐरे एलिमेंट।

उदाहरण: संग्रह और दस्तावेज़ बनाना

> db.demo414.insertOne(
  {
    "_id": "110",
    "details":[
      {"StudentName":"John","StudentMarks":56},
      {"StudentName":"Robert","StudentMarks":98}
    ]
  }
);
{ "acknowledged" : true, "insertedId" : "110" }

दस्तावेज़ देखना

> db.demo414.find();

आउटपुट:

{ "_id" : "110", "details" : [ { "StudentName" : "John", "StudentMarks" : 56 }, { "StudentName" : "Robert", "StudentMarks" : 98 } ] }

StudentMarks 56 वाले ऐरे एलिमेंट को खोजना

> db.demo414.aggregate([
  {$unwind: "$details"},
  {$match:{"details.StudentMarks": 56}}
])

आउटपुट:

{ "_id" : "110", "details" : { "StudentName" : "John", "StudentMarks" : 56 } }

व्याख्या:

  1. $unwind: "$details" - details ऐरे के प्रत्येक एलिमेंट के लिए अलग दस्तावेज़ बनाता है
  2. $match: {"details.StudentMarks": 56} - केवल StudentMarks 56 वाले दस्तावेज़ रखता है
  3. परिणाम में details अब ऐरे नहीं, बल्कि एकल ऑब्जेक्ट है

मूल संरचना बहाल करने के लिए:

db.demo414.aggregate([
  {$unwind: "$details"},
  {$match: {"details.StudentMarks": 56}},
  {$group: {_id: "$_id", details: {$push: "$details"}}}
])

विकल्प (MongoDB 3.6+): $filter के साथ प्रोजेक्शन

db.demo414.find(
  {},
  {details: {$elemMatch: {StudentMarks: 56}}}
)
// या
db.demo414.aggregate([
  {$project: {
    details: {$filter: {input: "$details", as: "d", cond: {$eq: ["$$d.StudentMarks", 56]}}}
  }}
])

नोट: $elemMatch प्रोजेक्शन में केवल पहला मेल खाने वाला एलिमेंट लौटाता है।

  1. - MongoDB कलेक्शन में ऑब्जेक्ट्स के ऐरे को कैसे खोजें?

    MongoDB में ऑब्जेक्ट्स के ऐरे को खोजने के लिए find() मेथड का उपयोग करें। find() मेथड एक कलेक्शन या व्यू में दस्तावेज़ों को चुनता है और चयनित दस्तावेज़ों के लिए एक कर्सर लौटाता है। उदाहरण के लिए डेटा बनाना आइए कुछ नमूना दस्तावेज़ों के साथ एक कलेक्शन बनाते हैं: db.demo484.insertOne( ... { id : 1, de

  1. - क्या MongoDB में ऑब्जेक्ट्स के ऐरे को खोज सकते हैं?

    हां, MongoDB में ऑब्जेक्ट्स के ऐरे को खोजने के लिए aggregate() में $unwind का उपयोग करें। मिलान के लिए $match का उपयोग करें। नमूना डेटा बनाना db.demo623.insertOne( { _id:1, details:[ { Name:Chris }, { DueDate:new ISODate(2020-01-10) }, { CountryName:US } ] } ); दस्तावेज़ देखना

  1. - MongoDB में ऑब्जेक्ट्स की सरणी के अंदर कई मिलान कैसे खोजें?

    इसके लिए, $and के साथ $regex का उपयोग करें। $and एक या अधिक एक्सप्रेशन की सरणी पर लॉजिकल AND ऑपरेशन करता है और उन दस्तावेज़ों को चुनता है जो सरणी में सभी एक्सप्रेशन को संतुष्ट करते हैं। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo525.insertOne({details:[{Name:Chris,CountryName:US}]}); { ackn