我遇到了小问题,我不确切地知道我错在哪里。>。<,我想将所有数据导出到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"
,但我不知道如何绕过这个字段。
答案 0 :(得分:1)
可悲的是,你不能用 mongoExport 来做到这一点。
mongoexport.exe --db wfm --collection AuditTrail --csv -fields variables.wfm_voteLog.0.className
这将输出 这里的问题是mongoexport不会从Document中提取数组。它只会为每个文档导出一个值 你只能做一些丑陋的事情:AuditTrail
集合的所有行,并且对于每行/文档,它将只放置第一个 * wfm_voteLog *的className
属。< / p>
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)
我看到三个问题:
使用您的示例文档导出命令字段选项不正确,它应如下所示:
mongoexport --db wfm --collection AuditTrail --csv --fields "wfm_voteLog.wfm_test@abc_com.className"
mongoexport解析字段名称时出现错误。它使用的正则表达式与mongo的正确字段名称概念不匹配。具体来说,它使用的\w
不包含@
字符。如果您使用Madarco建议的--fieldFile
选项,则可以避免此错误。
echo wfm_voteLog.wfm_test@abc_com.className > ff;
mongoexport --db wfm --collection AuditTrail --csv --fieldFile ff
最后,wfm_test@abc_com
看起来像数据值,而不是像emailAddress
这样的数据模型名称。我在这里假设,不同的文档在这里会有不同的值,具体取决于用户的电子邮件。虽然有效的mongo字段名称,但这会使查询和导出变得困难,因为字段名称没有外卡。也就是说,您无法使用wfm_voteLog.*.className
。您可以考虑重构数据模型。