MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Dokumen kloning dalam dengan asosiasi tersemat

Anda tidak perlu memanggil .clone untuk ini, Anda dapat menggunakan data mentah dari attributes . Misalnya metode/contoh di bawah ini akan memberikan id baru di seluruh dokumen jika ditemukan.

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))

Dan Anda sekarang memiliki salinan Mobil. Ini tidak efisien karena harus melalui seluruh hash untuk catatan untuk mengetahui apakah ada dokumen yang disematkan dalam dokumen yang disematkan. Anda akan lebih baik mengatur ulang struktur sendiri jika Anda tahu bagaimana jadinya, misalnya, jika Anda memiliki suku cadang yang tertanam di mobil, maka Anda bisa melakukan:

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}

Yang jauh lebih efisien daripada hanya melakukan reset umum.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mengapa Mongo meminta filter nol di FETCH setelah melakukan IXSCAN

  2. mongodb bagian dari objectid kemungkinan besar unik

  3. Cara Memeriksa Tipe Data Kolom di SQL

  4. MongoDb Streaming Keluar Data yang Dimasukkan secara Real-time (atau mendekati real-time)

  5. Total ukuran penyimpanan MongoDB