2014-01-14 111 views
9

我有一个MongoDB,我想导出到一个.csv文件。Mongodb导出嵌套字段

文件:

{ 
    "id" : 28, 
    "organisation" : "Mickey Mouse company", 
    "country" : "US", 
    "contactpersons" : [{ 
     "title" : "", 
     "typecontact" : "D", 
     "mobilenumber" : "757784854", 
     "firstname" : "Mickey", 
     "lastname" : "Mouse", 
     "emailaddress" : "[email protected]" 
    }], 
    "modifieddate" : "2013-11-21T16:04:49+0100" 
} 

我要导出的所有文件,并且只想领域contactpersons.firstname和contactpersons.emailaddress

我用这个命令行:

 mongoexport -o /tmp/export.csv -host dbmongo -port 27017 -db organisation -collection organisationa -u user -p password -csv -fields 'contactpersons.0.firstname, contactpersons.0.emailaddress' 

这工作多或更少,它出口,但只输出字段firstname而不是电子邮件地址。我需要它也出口领域电子邮件地址。

任何想法我可以做到这一点?我不明白为什么它不起作用,即使我给emailaddress领域。是否给出错误。

感谢您的帮助!

+0

双引号完美的工作对我来说anywway,mongoexport -o export.csv -db计算器-collection exportcsv -fields“contactpersons。 0.firstname,contactpersons.0.emailaddress“--csv –

回答

6

创建fields.txt文件,并插入以下字段到它:

contactpersons.0.firstname 
contactpersons.0.emailaddress 

然后你可以用下面的命令给定的字段导出到的.csv

mongoexport -d organisation -c organisation -fieldFile fields.txt --csv > /tmp/export.csv 
+0

需要更多信息,如果我想从'contactpersons'数组中导出多个文档,该怎么办?例如,我有这样的文件:“{ ”id“:28, ”organization“:”ABC company“, ”country“:”US“, ”contactpersons“:[{”0“ , “名字”: “米奇”, “姓氏”: “鼠标”, “EMAILADDRESS”: “[email protected]” },{ “称号”: “”, “名字”:“唐纳德“ ”修改日期“:”2013-11-21T16:04:49 + 0100“ }”需要将这两个对象导出到“contactpersons”数组中。 –

+0

正确的syintax是'--fieldFile fields.txt' – DistribuzioneGaussiana

+0

@AyazPasha你有没有发现任何解决方案来导出文件的数组可能包含多个元素在最后? – akruspe

7

发现了它。我需要删除空格。

这是错误的:

mongoexport -o /tmp/export.csv -host dbmongo -port 27017 -db organisation -collection organisationa -u user -p password -csv -fields 'contactpersons.0.firstname, contactpersons.0.emailaddress' 

这是正确的:

mongoexport -o /tmp/export.csv -host dbmongo -port 27017 -db organisation -collection organisationa -u user -p password -csv -fields 'contactpersons.0.firstname,contactpersons.0.emailaddress' 
+0

它会将两个文档Mickey和Donald都分别导出吗? – user3186866