Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how use mongoexport to export only specific fields in a sub-document

Tags:

json

mongodb

is there a way to export only specified fields in a sub-document while using mongoexport? mongo docs says to just use -f field1, field2 etc... but that only works with top level fields. i have a document inside of the main document that also has fields. is there any way to get only those?

Example:

{
    "topField1": "topValue1",
    "topField2": "topValue2",
    "subDoc1: {
                  "subField1": "subValue1",
                  "subField2": "subValue2"
              }
}

is there a way to specify that i ONLY get the field subField2?

i know in a regular mongo query i could use "subDoc1.subField2" which would simply return {"$oid": 122432432, {"subDoc1":{"subField2": "subValue2"}} but this doesn't seem to work with mongoexport.

also i want to export as json.

like image 891
Khon Lieu Avatar asked Jul 14 '11 17:07

Khon Lieu


2 Answers

what kind of error do you get using dotnotation? I'm running mongoDB 1.8.2 and for me the following works:

mongoexport -d dbName -c collectionName -f subDoc1.subField2 --csv -o /path/to/file.csv

The CSV looks like this

subDoc1.subField2 #header with field names
"subValue2" #actual entry
like image 113
Dimi Avatar answered Sep 20 '22 19:09

Dimi


enter image description here

mongoexport --db db_name --collection collection_name --fields 'No,Name' --out collection_name.json

{"_id":{"$oid":"5b2a1d540e63356357cbff46"},"name":"vijil","dep":"MCA"} {"_id":{"$oid":"5b2a1d5e0e63356357cbff47"},"name":"arul","dep":"MCA"} {"_id":{"$oid":"5b2a1d670e63356357cbff48"},"name":"abessh","dep":"MCA"}

like image 30
vijin selvaraj Avatar answered Sep 18 '22 19:09

vijin selvaraj