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

MongoDB में नेस्टेड सरणी से विशिष्ट रिकॉर्ड कैसे हटाएं?

MongoDB में नेस्टेड सरणी (सरणी के अंदर सरणी) से विशिष्ट रिकॉर्ड हटाने के लिए पोजिशनल ऑपरेटर $ के साथ $pull का उपयोग करें।

उदाहरण

दो-स्तरीय नेस्टेड सरणी वाला दस्तावेज़ बनाएं:

> db.deletingSpecificRecordDemo.insertOne(
  {
    "StudentDetails": [
      {
        "StudentName": "John",
        "StudentSubjectDetails": [
          {"Subject": "MongoDB", "Marks": 45},
          {"Subject": "MySQL", "Marks": 67}
        ]
      }
    ]
  }
);
{ "acknowledged" : true, "insertedId" : ObjectId("5cf2210ab64a577be5a2bc06") }

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

> db.deletingSpecificRecordDemo.find().pretty();
{ "_id" : ObjectId("5cf2210ab64a577be5a2bc06"), "StudentDetails" : [ { "StudentName" : "John", "StudentSubjectDetails" : [ { "Subject" : "MongoDB", "Marks" : 45 }, { "Subject" : "MySQL", "Marks" : 67 } ] } ] }

Marks 45 वाला विषय हटाएं

> db.deletingSpecificRecordDemo.update(
  {"_id": ObjectId("5cf2210ab64a577be5a2bc06"), "StudentDetails.StudentName": "John"},
  { "$pull": {"StudentDetails.$.StudentSubjectDetails": {"Marks": 45}} },
  {multi: true}
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

परिणाम जांचें:

> db.deletingSpecificRecordDemo.find().pretty();
{ "_id" : ObjectId("5cf2210ab64a577be5a2bc06"), "StudentDetails" : [ { "StudentName" : "John", "StudentSubjectDetails" : [ { "Subject" : "MySQL", "Marks" : 67 } ] } ] }

व्याख्या:

  • StudentDetails.StudentName: "John" - बाहरी सरणी में सही ऑब्जेक्ट ढूंढता है
  • StudentDetails.$.StudentSubjectDetails - $ पोजिशनल ऑपरेटर मिले हुए बाहरी तत्व को संदर्भित करता है
  • $pull आंतरिक सरणी से मेल खाने वाला ऑब्जेक्ट हटा देता है

आधुनिक सिंटैक्स (MongoDB 3.6+) - arrayFilters:

db.collection.updateOne(
  {_id: ObjectId("...")},
  {$pull: {"StudentDetails.$[outer].StudentSubjectDetails": {Marks: 45}}},
  {arrayFilters: [{"outer.StudentName": "John"}]}
);

यह अधिक पठनीय और लचीला है, विशेष रूप से गहरी नेस्टिंग के लिए।

  1. - MongoDB में Document से Array Value Delete करना

    Array values delete करने के लिए MongoDB में $pull का उपयोग करें। $pull operator existing array से उन सभी instances को remove करता है जो specified condition से match करते हैं। Collection बनाना > db.demo535.insertOne( ... { ... studentId : 101, ... studentName : Chris, ... ListOfMailIds : [

  1. - MongoDB दस्तावेज़ों में विशिष्ट फ़ील्ड के ऐरे एलिमेंट्स काउंट करना

    किसी फ़ील्ड में ऐरे एलिमेंट्स की संख्या गिनने के लिए $size ऑपरेटर का उपयोग करें। डेमो डेटा > db.demo723.insertOne({Subject:[MySQL,MongoDB]}); > db.demo723.insertOne({Subject:[C]}); > db.demo723.insertOne({Subject:[C++,Java,Python]}); क्वेरी db.demo723.aggregate([ { $project: { count:

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

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