MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

मोंगोडब अद्यतन गहराई से नेस्टेड उप-दस्तावेज़

दुर्भाग्य से, आप $ . का उपयोग नहीं कर सकते प्रति कुंजी एक से अधिक बार ऑपरेटर, इसलिए आपको बाकी के लिए संख्यात्मक मानों का उपयोग करना होगा। जैसे:

db.myCollection.update({
    "id": 1, 
    "forecasts.forecast-id": 123, 
    "forecasts.levels.level": "proven", 
    "forecasts.levels.configs.config": "Custom 1"
  },
  {"$set": {"forecasts.$.levels.0.configs.0": newData}}
)

नेस्टेड सरणियों को अद्यतन करने के लिए MongoDB का समर्थन खराब है। इसलिए यदि आप डेटा को बार-बार अपडेट करना चाहते हैं, और इसके बजाय एकाधिक संग्रहों का उपयोग करने पर विचार करना चाहते हैं, तो आप उनके उपयोग से बचने के लिए बेहतर हैं।

एक संभावना:forecasts इसका अपना संग्रह है, और यह मानते हुए कि आपके पास level . का एक निश्चित सेट है मान, level make बनाएं एक सरणी के बजाय एक वस्तु:

{
  _id: 123,
  parentId: 1,
  name: "Forecast 1", 
  levels: {
    proven: { 
      configs: [
        { 
          config: "Custom 1",
          variables: [{ x: 1, y:2, z:3}]
        }, 
        { 
          config: "Custom 2",
          variables: [{ x: 10, y:20, z:30}]
        }, 
      ]
    },
    likely: {
      configs: [
        { 
          config: "Custom 1",
          variables: [{ x: 1, y:2, z:3}]
        }, 
        { 
          config: "Custom 2",
          variables: [{ x: 10, y:20, z:30}]
        }, 
      ]
    }
  }
}

फिर आप इसका उपयोग करके इसे अपडेट कर सकते हैं:

db.myCollection.update({
    _id: 123,
    'levels.proven.configs.config': 'Custom 1'
  },
  { $set: { 'levels.proven.configs.$': newData }}
)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मैं नेवले पर LIKE ऑपरेटर का उपयोग कैसे कर सकता हूं?

  2. नेवले में id और _id में क्या अंतर है?

  3. एक नए _id . का उपयोग करके MongoDB में एक दस्तावेज़ को डुप्लिकेट करें

  4. मोंगोडब में दिनांक/समय स्टोर करने का सबसे अच्छा तरीका

  5. लूपबैक पर MongoDB एकत्रीकरण