我有一個mongodb數據庫,我使用mongoid通過rails 3應用程序訪問。該數據庫由大約10-15個集合組成。這些集合中的一些文檔具有嵌入式文檔,其他文檔通過id鏈接。在Mongo數據庫中克隆文檔
我需要克隆數據庫中的大部分數據以創建新記錄。當我們的客戶翻譯這些新記錄時,需要與他們的克隆對象共存。這些新記錄必須保持與以前相同的關係,然而新克隆的記錄需要指向新克隆的對應記錄。
注意事項包括:有一些關係具有需要在克隆上更新的「外鍵」。一些文件嵌入了需要與父母一起克隆的文件。無論如何,克隆文檔將無法與其克隆文檔相關聯。
考慮的解決方案:第一種選擇是複製數據庫並嘗試合併不需要克隆的所有內容。可能會有點混亂,我認爲現有的ID也會被克隆。我考慮的第二個選擇是編寫一個腳本,它可以遍歷每個Mongoid文檔類並調用clone,但是我發現monogid.clone做了一個淺拷貝而不是一個深沉的苦差事。所以對於這個解決方案,我將不得不寫一個案例,其中嵌入關係檢測到以執行深層複製。這也可能變得混亂。
有沒有我在這裏沒有考慮過的選項?有沒有更好的方法去解決其中一種考慮的解決方案?我反對嗎?
我覺得你對這個雜亂的版本感到困惑,這幾乎是我在MongoDB中需要複製東西時所做的。 –
嘿@ muistooshort你的意思是使用.clone? – Stewart
如果'clone'沒有處理嵌入式文檔,那麼就會變得混亂,然後全部手動完成。我傾向於通過手工完成,但我沒有使用Mongoid。 –