簡體   English   中英

克隆Mongo數據庫中的文檔

[英]Cloning documents within a Mongo database

我有一個mongodb數據庫,我使用mongoid通過rails 3應用程序訪問。 該數據庫包含大約10-15個集合。 這些集合中的一些文檔具有嵌入的文檔,而其他文檔通過id鏈接。

我需要克隆數據庫中的大部分數據來創建新記錄。 這些新記錄需要與克隆的同行共存,同時由我們的客戶翻譯。 這些新記錄必須保持與之前相同的關系,但新克隆的記錄需要指向新克隆的記錄。

考慮因素包括:許多關系具有一個“外鍵”,需要在克隆時更新。 有些文檔嵌入了需要與父母一起克隆的文檔。 無論如何,克隆文件將無法與其克隆的文檔相關聯。

考慮的解決方案:第一個選項是復制數據庫並嘗試合並不需要克隆的所有內容。 可能有點亂,我假設現有的ID也會被克隆。 我考慮的第二個選項是編寫一個腳本,它將迭代每個Mongoid文檔類並調用clone但是我發現monogid.clone執行淺拷貝而不是深刻的苦差事。 因此,對於此解決方案,我將不得不編寫一個案例,其中檢測到嵌入式關系以執行深層復制。 這也可能變得混亂。

有沒有我沒考慮過的選擇? 有沒有更好的方法來考慮其中一個考慮的解決方案? 我反對嗎?

觀察評論中的討論,我會說如果.clone不起作用,您可以使用屬性,read_attribute,write_attribute方法以一種緊湊的方式輕松完成。 摘自這里

# Get the field values as a hash.
person.attributes

# Set the field values in the document.
Person.new(first_name: "Jean-Baptiste", middle_name: "Emmanuel")
person.attributes = { first_name: "Jean-Baptiste", middle_name: "Emmanuel" }
person.write_attributes(
  first_name: "Jean-Baptiste",
  middle_name: "Emmanuel"
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM