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

एम्बेडेड संघों के साथ डीप क्लोन दस्तावेज़

आपको इस पर .clone को कॉल करने की आवश्यकता नहीं है, आप attributes से कच्चे डेटा का उपयोग कर सकते हैं . उदाहरण के लिए नीचे दी गई विधि/उदाहरण पूरे दस्तावेज़ में नई आईडी देगा यदि यह एक पाता है।

def reset_ids(attributes)
    attributes.each do |key, value|
        if key == "_id" and value.is_a?(BSON::ObjectId)
            attributes[key] = BSON::ObjectId.new
        elsif value.is_a?(Hash) or value.is_a?(Array)
            attributes[key] = reset_ids(value)
        end        
    end
    attributes
end


original = Car.find(old_id)
car_copy = Car.new(reset_ids(original.attributes))

और अब आपके पास Car की एक कॉपी है। यह अक्षम है, हालांकि इसे रिकॉर्ड के लिए पूरे हैश से गुजरना पड़ता है ताकि यह पता लगाया जा सके कि एम्बेडेड दस्तावेज़ में कोई एम्बेडेड दस्तावेज़ हैं या नहीं। बेहतर होगा कि आप संरचना को स्वयं रीसेट करें यदि आप जानते हैं कि यह कैसा होगा, उदाहरण के लिए, यदि आपके पास कार में लगे पुर्जे हैं, तो आप बस यह कर सकते हैं:

original = Car.find(old_id)
car_copy = Car.new(original.attributes)
car_copy._id = BSON::ObjectId.new
car_copy.parts.each {|p| p._id = BSON::ObjectId.new}

जो केवल एक सामान्य रीसेट करने की तुलना में बहुत अधिक कुशल है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. डेटाबेस कमांड के साथ किसी सरणी के अंदर फ़ील्ड का नाम कैसे बदलें?

  2. MongoDB नेस्टेड या/और कहाँ?

  3. MongoDB के लिए सामान्य विफलता परिदृश्यों को ठीक करने के लिए बैकअप का उपयोग करना

  4. क्या एक नेवला स्कीमा पर 2dsphere इंडेक्स लगाने से स्थान फ़ील्ड की आवश्यकता होती है?

  5. मोंगोडब:प्रत्येक सरणी स्थिति के लिए पूर्णांकों की कुल सरणी