Reputation: 293
I have a mongo document with a structure like: { "foo": { "bar1": "val1", "bar2": "val2"} }
I'd like to import my data from a csv using mongoimport --type csv --headerline [...]
I am not sure how to format the field name in the csv to address the nested structure. For instance:
test.csv:
foo.bar1
example
returns { "_id" : ObjectId("4e9d9d25c5d8708e1f51cdbc"), "foo.bar1" : "example" }
instead of the desired output:
{ "_id" : ObjectId("4e9d9d25c5d8708e1f51cdbc"), "foo: {"bar1" : "example"} }
The field name seems to be interpreted as a string regardless of its value. Things like foo[bar1]
and foo: {bar1}
are also used verbatim.
Upvotes: 6
Views: 5205
Reputation: 1437
You can add a column in CSV like parent_key.array_index.nested_key
CSV data example
JSON object image in mongo db after import
Upvotes: 1
Reputation: 41882
This isn't supported in the current (v2.0) version of mongoimport, but it should be coming soon. You can check out the JIRA ticket here, scheduled for v2.1:
Until then, if you can translate your CSV data to JSON then you could use mongoimport --type json
to import the nested data.
EDIT:
This feature is released now, and available from 2.8.0-rc0
Upvotes: 9