2017-08-26 71 views
0

我想克隆一個集合到一個新的集合,刪除所有的文檔,然後從csv文件導入新的文檔。當我使用copyTo進行復制時,一切正常。數據類型從源集合複製到新集合。但是,從新集合中刪除所有文檔並從csv導入後,數據類型將丟失。源csv中的數據類型已經設置爲與我從中複製的源集合中的內容匹配。mongodb dataypes導入時

  • 有沒有辦法在從集合中刪除所有文檔後保留數據類型?
  • 如何在導入時從我的csv複製數據類型?例如我的日期列顯示爲字符串。

回答

1

新集合沒有固定模式,因此添加的文檔不必相似,除非您使用validator選項創建集合。您還可以將驗證添加到現有集合中。請參閱MongoDB手冊中的Document Validation

+0

太好了。這有助於並增加了我想要的驗證層,但是如何從集合中「複製或提取」模式以便我可以將它應用於新集合(如果可能的話)?我來自一個SQL背景,我試圖瞭解是否有任何等同於在SQL中腳本的表。 –

+0

我們不使用驗證功能,因此我不知道是否有方法從現有文檔創建驗證模式。我們從MongoDB v2開始(驗證是一個v3.2 +特性)......我不認爲我們會爲我們的集合添加驗證,因爲我們喜歡我們寫入數據庫的靈活性。我們的服務器代碼是Java,所以我們沒有額外字段或不正確數據類型的問題(因爲我們堅持Java對象)。能夠改變我們堅持的內容而無需重新配置集合是很好的。我們的領域有點流暢,所以我們的數據模型經常以小的方式變化。 – Paul

+0

我以前的評論(空間不足)的要點是建議如果可能的話跳過驗證。我們從關係數據庫遷移了我們的應用程序,並沒有後悔一次。我們能夠比以前更快地適應所需和要求的更改。例如,將字段從單個值更改爲數組現在是微不足道的......來自sql背景,您知道關係數據庫中的痛苦是什麼。代碼強制約束適用於我們(我們沒有數據完整性問題),但當然可能不適合您。 – Paul