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

मोंगोडब डॉट फील्ड अपडेट

बेशक यह करता है क्योंकि यह वही है जो आप इसे करने के लिए कह रहे हैं। आपके शीर्षक के बावजूद, "dot notation"<का कोई उपयोग नहीं है। /ए> यहाँ बिल्कुल। यदि आप मौजूदा संपत्तियों को अधिलेखित नहीं करना चाहते हैं तो यह निश्चित रूप से आप क्या करना चाहते हैं। $set जहां जब तक आप यहां संरचना नहीं बदलते, मूल रूप से बेमानी है।

इसे "ठीक" करने के लिए, आपको अपने data में हेरफेर करना होगा पहले वस्तु। इन पंक्तियों के साथ कुछ के साथ:

var newobj = {};
Object.keys( data ).forEach(function(key) {
    if ( typeof(data[key]) == "object" ) {
       Object.keys( data[key] ).forEach(function(subkey) {
           newobj[key + "." + subkey] = data[key][subkey];
       });
    } else {
       newobj[key] = data[key];
    }
});

यह आपको और आउटपुट newobj . में देता है इस तरह की संरचना:

{
    "postcode" : "BV123456789BY",
    "status.last_check" : 1413539153572,
    "status.code" : "06",
    "status.postnum" : "247431",
    "status.date" : ISODate("2014-10-17T11:28:20.540Z"),
    "status.text" : "06. Поступило в участок обработки почты (247431) Светлогорск - 1"
}

फिर निश्चित रूप से आप अपने सामान्य अपडेट के साथ आगे बढ़ सकते हैं और सब कुछ ठीक कर सकते हैं:

Order.update({ "postcode": newobj.postcode}, { "$set": newobj }, function (err) {
    if (err) console.log(err);
});

बेशक आपको अधिक नेस्टेड संरचना के लिए कुछ रिकर्सन की आवश्यकता होगी, लेकिन यह आपको सामान्य विचार देना चाहिए। डॉट नोटेशन जाने का रास्ता है, लेकिन आपको वास्तव में इसका उपयोग करने की आवश्यकता है।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB एकत्रीकरण ढांचे के साथ नेस्टेड पोस्ट कैसे समूहित करें?

  2. लेखन त्रुटि:ObjectId('') JSON क्रमानुसार नहीं है

  3. नेवला डिफ़ॉल्ट सत्यापन का विस्तार करता है

  4. CouchDB या MongoDB में से कौन मेरी आवश्यकताओं के अनुरूप है?

  5. ओपनशिफ्ट पर पुश करने के बाद मोंगोडब को रीसेट क्यों किया जाता है