2014-01-14 3 views
9

У меня есть MongoDB, и я хочу экспортировать в CSV-файл.Mongodb export inested field

документ:

{ 
    "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' 

Это работает более или меньше, он экспортирует, но только экспортирует первое имя поля, а не адрес электронной почты. Мне нужно также экспортировать поле emailaddress.

Любая идея, как я могу это сделать? Я не понимаю, почему это не работает, хотя я даю поле emailaddress. Предоставляется ошибка.

Спасибо за помощь!

+0

двойные кавычки работали отлично для меня anywway, mongoexport -o export.csv -db StackOverflow -collection exportcsv -полей «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, «организация»: «ABC company», «страна»: «США», «контактные лица»: [{ "title": "" , "Firstname": "Микки", "Lastname": "мышь", "EMAILADDRESS": "[email protected]" }, { "название": "", "Firstname": «Дональд ", " lastname ":" Duck ", " emailaddress ":" [email protected] " }], " modifieddate ":" 2013-11-21T16: 04: 49 + 0100 " }' Необходимо экспортируйте оба объекта в массив 'contactersons'. –

+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

будет ли он экспортировать оба документа Микки и Дональда в отдельных строках? – user3186866