2014-02-27 30 views
0

讓我們說,我想從1個MongoDB羣集的5000萬條記錄傳輸數據到另一個自我強加的「模式」發生了巨大變化的數據,我想測試在實際運行之前導入+轉換。數據轉換幫助 - 各種文檔 - 不同的字段

我能夠找到不同字段的列表,但我想拉各種文檔,以便每個不同的字段被拉出。這些數據將成爲測試我的Map-Reduce腳本的源碼。

此問題是由於多年使用和更改保存存儲數據的方式而引起的。最初是user.orgId的是user.organizationid。

有什麼建議嗎?即使在第三方工具上?

+1

我從問這個問題開始就學會了map-reduce不會執行我需要的轉換。它僅限於輸出_id /值集合,因此我不能將其用作我的轉換器。但是,這個問題的原意仍然存在。我一直在尋找一種開箱即用,高效的方式來查詢我的集合並檢索文檔列表,使得每個不同的字段至少由一個文檔表示。 – Plenoge

回答

1

基本上好像你有兩個相關的問題:

  1. 如何運行,而不會影響最終的集合的進口和轉換。
  2. 如何驗證集合中的文檔是否與特定的模式定義相匹配。

這兩個問題都有各種合適的答案。

對於問題1.

a。您可以創建羣集的臨時副本:然後在此環境中運行導入和轉換。這是最安全的方式。

b。您可以簡單地使用不同的最終集合來運行導入和轉換。這並不像a這樣安全,因爲它要求開發人員在測試時間和最終部署時刻努力選擇合適的集合。

問題2.

這在很大程度上取決於你的,我不知道任何有關開發環境。但是,爲了舉例,如果您使用的是python,則可以使用如下代碼:https://pypi.python.org/pypi/jsonschema,並遍歷每個文檔,以確認它符合您需要的模式。如果您已經有ODM,並且具有描述模式的映射,那麼應該可以使用映射來驗證文檔。

+0

問題1我錯了。我認爲map-reduce會輸出一個我想要的集合,而不是_id/value配對。不幸的是,這意味着我需要使用一個mongodb驅動程序並編寫腳本來讀取文檔,轉換它們,並將它們輸出到不同的集合。 問題2雖然更多是我原來的問題。我很好奇,是否有一些開箱即用的方式讓mongodb轉儲文檔列表,以便每個不同的字段至少由一個文檔表示。 – Plenoge

+0

沒有現成的方式來做你想做的事。您當然可以通過shell在JavaScript中執行此操作,而無需使用其他語言/環境。你可以在一個聚合查詢中做到這一點。 – idbentley