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

सबडॉक्स का मोंगो अपडेट

एक सरणी को समतल करने से बड़े दस्तावेज़ बन सकते हैं, क्योंकि प्रत्येक आंतरिक सरणी तत्व के लिए उसके बाहरी तत्व के सभी डेटा को दोहराया जाना चाहिए (और यह सभी स्तरों के लिए)।

इसलिए, यदि फ़्लैटन कोई विकल्प नहीं है, तो उल्लेखित जीरा (सर्वर-831 ):

  • दस्तावेज़ को एक चर में पढ़ें
  • सरणी में हेरफेर करें
  • दस्तावेज़ को अपडेट करें, संपूर्ण सरणी को फिर से लिखें

आपके उदाहरणों को देखते हुए, यह इस तरह दिखेगा:

doc = db.xx.findOne( {_id:1} );
doc.properties.forEach( function(p) {
    if ( p.property_id == 2 ) { 
        p.tags.forEach( function(t) {
           if ( t.tag_id == 3 ) {
               t.tag_value = 100;
           }
           else if ( t.tag_id == 4 ) {
               newChannel = {};
               newChannel.channel_id = 5;
               newChannel.channel_name = "test5";
               t.channels.push(newChannel);
           }
        })
    }
});
db.xx.update({_id:1},{$set:{properties:doc.properties}});

नतीजा यह है:

doc = db.xx.findOne({_id:1})
{
    "_id" : 1,
    "properties" : [
        {
            "property_id" : 1,
            "tags" : [
                {
                    "tag_id" : 1,
                    "tag_value" : 1000,
                    "channels" : [
                        {
                            "channel_id" : 1,
                            "channel_name" : "test1"
                        },
                        {
                            "channel_id" : 2,
                            "channel_name" : "test2"
                        }
                    ]
                },
                {
                    "tag_id" : 2,
                    "tag_value" : 2500,
                    "channels" : [
                        {
                            "channel_id" : 2,
                            "channel_name" : "test2"
                        },
                        {
                            "channel_id" : 3,
                            "channel_name" : "test3"
                        }
                    ]
                }
            ]
        },
        {
            "property_id" : 2,
            "tags" : [
                {
                    "tag_id" : 3,
                    "tag_value" : 100,
                    "channels" : [
                        {
                            "channel_id" : 1,
                            "channel_name" : "test1"
                        },
                        {
                            "channel_id" : 3,
                            "channel_name" : "test3"
                        }
                    ]
                },
                {
                    "tag_id" : 4,
                    "tag_value" : 5000,
                    "channels" : [
                        {
                            "channel_id" : 1,
                            "channel_name" : "test1"
                        },
                        {
                            "channel_id" : 5,
                            "channel_name" : "test5"
                        }
                    ]
                }
            ]
        }
    ]
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB यौगिक सूचकांक उपयोग

  2. उन दस्तावेज़ों को कैसे वापस करें जहाँ दो फ़ील्ड का मान समान है

  3. मोंगोडब में टाइमस्टैम्प को आज तक कैसे परिवर्तित करें?

  4. मैपर से मोंगोडब की वस्तु तक पहुंचना (MapReduce)

  5. अगर प्रविष्टि में मेल खाने वाले दो फ़ील्ड नहीं हैं तो mongo नेस्टेड सरणी में जोड़ें