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

MongoDB में $addToSet का उपयोग करके गहरी नेस्टेड सरणी में ऑब्जेक्ट कैसे जोड़ें?

MongoDB में गहरी नेस्टेड सरणी में ऑब्जेक्ट जोड़ने के लिए (केवल यदि पहले से मौजूद नहीं है), डॉट नोटेशन और स्थिति ऑपरेटर $ के साथ $addToSet का उपयोग करें।

उदाहरण: खाली नेस्टेड सरणी वाला दस्तावेज़

> db.demo380.insertOne({
    "details" : [
        { "Name" : "Chris", "details1" : [ ] },
        { "Name" : "David", "details1" : [ ] }
    ]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5b56e32ae06a1609a00b11") }

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

> db.demo380.find().pretty();

आउटपुट: दो तत्व, प्रत्येक में खाली details1 सरणी।

अपडेट: David के details1 में ऑब्जेक्ट जोड़ें

> db.demo380.update(
    { "details.Name": "David" },
    { $addToSet: { "details.$.details1": { 'SubjectName': "MongoDB", 'TeacherName': "Bob" } } },
    false, true
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

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

> db.demo380.find().pretty();

आउटपुट: David की details1 सरणी में अब ऑब्जेक्ट है; Chris की खाली है।

व्याख्या

  • {"details.Name": "David"} बाहरी दस्तावेज़ और सरणी तत्व से मेल खाता है।
  • details.$.details1 स्थिति ऑपरेटर $ मेल खाने वाले सरणी तत्व (David) को संदर्भित करता है, फिर उसकी details1 सरणी।
  • $addToSet ऑब्जेक्ट जोड़ता है केवल यदि सरणी में समान ऑब्जेक्ट नहीं है (गहरी समानता जांच)।
  • अंतिम दो तर्क upsert: false, multi: true हैं (विरासत update सिंटैक्स)।

आधुनिक सिंटैक्स (updateOne/updateMany)

> db.demo380.updateOne(
    { "details.Name": "David" },
    { $addToSet: { "details.$.details1": { SubjectName: "MongoDB", TeacherName: "Bob" } } }
);

नोट

$addToSet पूरे ऑब्जेक्ट समानता की जांच करता है। यदि आप केवल एक फील्ड (जैसे SubjectName) द्वारा विशिष्टता लागू करना चाहते हैं, तो arrayFilters के साथ अलग दृष्टिकोण या $set का उपयोग करें।

  1. - MongoDB में ऑब्जेक्ट आईडी की सरणी पर $lookup कैसे करें?

    MongoDB में $lookup का उपयोग करके ऑब्जेक्ट आईडी की सरणी वाले फील्ड पर लेफ्ट आउटर जॉइन करने के लिए, let के साथ सब-पाइपलाइन सिंटैक्स का उपयोग करें ताकि सरणी वेरिएबल बांध सके और $in के साथ $match कर सके। उदाहरण: दो संग्रह संग्रह 1 (demo395): उपयोगकर्ता दस्तावेज़ > db.demo395.insertOne({Name:Chris})

  1. - MongoDB क्वेरी: नेस्टेड ऐरे को एग्रीगेट करें

    MongoDB में नेस्टेड ऐरे को एग्रीगेट करने के लिए aggregate() का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo441.insertOne( ...    { ... ...       "Name" : "David", ...       "Age" : 21, ... ...     &n

  1. - MongoDB में नेस्टेड सरणी को कैसे सॉर्ट करें?

    MongoDB में नेस्टेड सरणी को सॉर्ट करने के लिए, $sort का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo505.insertOne( { details: [ { Name:Chris, Score:58 }, { Name:Bob, Score:45 }, { Name:John, Score:68 }, { Name:David, Score:46 } ] }); { ackn