6

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.

1
  • This may not currently be possible. From this thread: No way to do nesting with csv. Kind of a weird api. Suggestions/patches welcome Commented Oct 18, 2011 at 17:12

2 Answers 2

9

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

Sign up to request clarification or add additional context in comments.

Comments

1

You can add a column in CSV like parent_key.array_index.nested_key

CSV data example

CSV data example

JSON object image in mongo db after import

JSON object image in mongo db after import

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.