2013-05-03 206 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。你可能会考虑重构你的数据模型。