0

我遇到了一个小问题,我不知道我错在哪里..>.<,我想将所有数据导出到 CSV 文件,似乎我无法导出,可能是语法错误:(

这是我的 mongo 数据

"wfm_voteLog" : 
    { 
        "wfm_test@abc_com" : 
            { 
                "className" : "com.abc.com.shared.activiti.ProcessApproval", 
                "approver" : "wfm.test@abc.com", 
                "approvalTime" : ISODate("2012-08-16T08:59:43.297Z"), 
                approvalState" : "APPROVED" 
            } 
    } 

这是我的出口查询

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

我相信问题来自"wfm_test@abc_com",但我不知道如何绕过这个领域。

4

2 回答 2

1

可悲的是,你不能用mongoExport做到这一点。

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

这将输出AuditTrail集合的所有行,并且对于每一行/文档,它将仅放置第一个*wfm_voteLog*className的属性。

这里的问题是 mongoexport 不会从您的文档中提取数组。它只会为每个 Document 导出一个值

你只能做一些丑陋的事情,比如:

mongoexport.exe --db wfm --collection AuditTrail --csv -fields 'variables.wfm_voteLog.0.className,variables.wfm_voteLog.1.className,variables.wfm_voteLog.2.className,...'
于 2013-05-03T14:17:15.113 回答
1

我看到三个问题:

  1. 对于您的示例文档,导出命令字段选项不正确,它应该如下所示:

    mongoexport --db wfm --collection AuditTrail --csv --fields "wfm_voteLog.wfm_test@abc_com.className"
    
  2. 字段名称的 mongoexport 解析存在错误。它使用的正则表达式与 mongo 的正确字段名称概念不匹配。具体来说,它使用\w不包括@字符。如果您使用--fieldFileMadarco 建议的选项,则可以避免此错误。

    echo wfm_voteLog.wfm_test@abc_com.className > ff;
    mongoexport --db wfm --collection AuditTrail --csv --fieldFile ff
    
  3. 最后,在wfm_test@abc_com我看来,它是一个数据值,而不是像emailAddress. 我在这里假设,根据用户的电子邮件,不同的文档在这里会有不同的值。虽然有效的 mongo 字段名称,但这会使查询和导出变得困难,因为字段名称没有通配符。也就是说,您不能使用wfm_voteLog.*.className. 您可能会考虑重构您的数据模型。

于 2013-05-03T15:29:37.860 回答