2013-05-03 141 views
0

我遇到了一個小問題,我不知道我到底錯在哪裏......>。 <,我想導出所有的數據到CSV文件,我似乎無法出口,也許有語法錯誤:(MongoDB導出爲CSV

這我我蒙戈數據

"wfm_voteLog" : 
    { 
     "[email protected]_com" : 
      { 
       "className" : "com.abc.com.shared.activiti.ProcessApproval", 
       "approver" : "[email protected]", 
       "approvalTime" : ISODate("2012-08-16T08:59:43.297Z"), 
       approvalState" : "APPROVED" 
      } 
    } 

,這我對我出口的查詢

$ mongoexport.exe --db wfm --collection AuditTrail --csv -fields 
    variables.wfm_voteLog.className 

我相信從"[email protected]_com"來的問題,但我不知道如何繞過這個領域。

+1

你得到的錯誤是什麼? – 2013-05-03 05:14:21

+0

我的csv文件中沒有任何內容,只有標題和內容... – 2013-05-03 06:00:18

回答

1

可悲的是,你不能做到這一點與蒙戈出口

mongoexport.exe --db wfm --collection AuditTrail --csv -fields variables.wfm_voteLog.0.className 

這將輸出你的AuditTrail集合中的所有行,併爲每個行/記錄它會把className屬性格式僅第一 * wfm_voteLog *。

這裏的問題是,mongoexport不會從您的文檔中提取數組。這將出口只有一個值對每個文件

,你只能做一些醜陋的東西,如:

mongoexport.exe --db wfm --collection AuditTrail --csv -fields 'variables.wfm_voteLog.0.className,variables.wfm_voteLog.1.className,variables.wfm_voteLog.2.className,...' 
1

我看到三個問題:

  1. 與export命令字段選擇您的示例文件是不正確的,它應該看起來像這樣:

    mongoexport --db wfm --collection AuditTrail --csv --fields "[email protected]_com.className" 
    
  2. 有一個mongoexport解析字段名稱時出錯。它使用的正則表達式與mongo的適當字段名稱不符。具體來說,它使用\w,它不包含@字符。如果您使用Madarco建議的--fieldFile選項,則可以避免此錯誤。

    echo [email protected]_com.className > ff; 
    mongoexport --db wfm --collection AuditTrail --csv --fieldFile ff 
    
  3. 最後,[email protected]_com在我看來就像一個數據值並不像emailAddress數據模型的名稱。我假設在這裏,根據用戶的電子郵件,不同的文檔會有不同的值。雖然有效的mongo字段名稱,但這會使查詢和導出變得困難,因爲字段名稱沒有通配符。也就是說,您不能使用wfm_voteLog.*.className。你可能會考慮重構你的數據模型。