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

MongoDB में विशिष्ट स्ट्रिंग वाले दस्तावेज़ निकालना

MongoDB एग्रीगेशन में $match का उपयोग करके नेस्टेड ऐरे में स्ट्रिंग खोजना

MongoDB में नेस्टेड ऐरे के भीतर विशिष्ट स्ट्रिंग मान वाले दस्तावेज़ निकालने के लिए एग्रीगेशन पाइपलाइन में $match स्टेज का उपयोग करें।

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

> db.demo424.insert(
  {
    "Information" : [
      { id:10, Name:"Chris" },
      { id:11, Name:"David" }
    ]
  }
);
WriteResult({ "nInserted" : 1 })
> db.demo424.insert(
  {
    "Information" : [
      { id:101, Name:"Mike" },
      { id:102, Name:"John" }
    ]
  }
);
WriteResult({ "nInserted" : 1 })

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

> db.demo424.find();

आउटपुट:

{ "_id" : ObjectId("5e74eb9dbbc41e36cc3cae6a"), "Information" : [ { "id" : 10, "Name" : "Chris" }, { "id" : 11, "Name" : "David" } ] }
{ "_id" : ObjectId("5e74eb9e15dc524f70227683"), "Information" : [ { "id" : 101, "Name" : "Mike" }, { "id" : 102, "Name" : "John" } ] }

"Chris" नाम वाले दस्तावेज़ निकालना

> db.demo424.aggregate(
  [ { $match : { "Information.Name": "Chris" } } ]
);

आउटपुट:

{ "_id" : ObjectId("5e74eb9dbbc41e36cc3cae6a"), "Information" : [ { "id" : 10, "Name" : "Chris" }, { "id" : 11, "Name" : "David" } ] }

व्याख्या:

  • "Information.Name": "Chris" - डॉट नोटेशन से नेस्टेड ऐरे के ऑब्जेक्ट्स के Name फील्ड में खोज
  • $match - पूरे दस्तावेज़ को फ़िल्टर करता है (ऐरे एलिमेंट नहीं)
  • मिलान करने वाला पूरा दस्तावेज़ लौटाया जाता है

केवल मिलान करने वाले ऐरे एलिमेंट्स के लिए:

db.demo424.aggregate([
  {$unwind: "$Information"},
  {$match: {"Information.Name": "Chris"}},
  {$group: {_id: "$_id", Information: {$push: "$Information"}}}
])

सरल find() विकल्प:

db.demo424.find({"Information.Name": "Chris"})

यह समान परिणाम देता है और सरल है। एग्रीगेशन का उपयोग तब करें जब आगे ट्रांसफॉर्मेशन की आवश्यकता हो।

केस-इनसेंसिटिव खोज:

db.demo424.find({"Information.Name": {$regex: "chris", $options: "i"}})
// या एग्रीगेशन में
{$match: {"Information.Name": {$regex: "chris", $options: "i"}}}
  1. - MongoDB में किसी फ़ील्ड के सभी मानों को विशिष्ट स्ट्रिंग से अपडेट करना

    कलेक्शन के सभी दस्तावेज़ों में किसी फ़ील्ड का मान बदलने के लिए update() के साथ multi: true (या नए वर्जन में updateMany()) का उपयोग करें। डेमो डेटा > db.demo720.insertOne({SubjectName:MySQL}); > db.demo720.insertOne({SubjectName:Java}); > db.demo720.insertOne({SubjectName:C}); > db.demo7

  1. - मौजूदा MongoDB डॉक्यूमेंट में विशिष्ट डेटाटाइप (सूची, ऑब्जेक्ट) के साथ फील्ड कैसे जोड़ें?

    आप $set का उपयोग कर सकते हैं। आइए एक कलेक्शन बनाते हैं: > db.demo732.insertOne({_id:1,Language:English}); { acknowledged : true, insertedId : 1 } > db.demo732.insertOne({_id:2,Language:Hindi}); { acknowledged : true, insertedId : 2 } find() से सभी डॉक्यूमेंट्स देखें: > db.demo732.find(); आ

  1. - MongoDB डॉक्यूमेंट से विशिष्ट मान फ़िल्टर करें

    विशिष्ट मान फ़िल्टर करने के लिए MongoDB में $filter का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo751.insertOne( { _id: 101, details: [ { Name: Robert, id:110,Age:21}, { Name: Rae, id:110,Age:22}, {Name: Ralph, id:116,Age:23} ] } ); { acknowledged : true, insertedId : 101 } find() से सभी डॉक