L'utilisation mongoimport CSV à lire dans la structure imbriquée?
-
26-10-2019 - |
Question
J'ai un document mongo avec une structure comme: { "foo": { "bar1": "val1", "bar2": "val2"} }
Je voudrais importer mes données à partir d'un fichier CSV en utilisant mongoimport --type csv --headerline [...]
Je ne sais pas comment formater le nom du champ dans la csv pour traiter la structure imbriquée. Par exemple:
test.csv:
foo.bar1
example
renvoie { "_id" : ObjectId("4e9d9d25c5d8708e1f51cdbc"), "foo.bar1" : "example" }
au lieu de la sortie désirée:
{ "_id" : ObjectId("4e9d9d25c5d8708e1f51cdbc"), "foo: {"bar1" : "example"} }
Le nom du champ semble être interprété comme une chaîne quelle que soit sa valeur. Des choses comme foo[bar1]
et foo: {bar1}
sont également utilisés in extenso.
La solution
Ce n'est pas pris en charge dans la version actuelle (v2.0) de mongoimport, mais il devrait arriver bientôt. Vous pouvez consulter le billet d'JIRA ici, prévue pour v2.1:
En attendant, si vous pouvez traduire vos données CSV à JSON alors vous pouvez utiliser mongoimport --type json
pour importer les données imbriquées.
EDIT:
Cette fonctionnalité est maintenant publié et disponible à partir 2.8.0-rc0