Utilidad de importación de MongoDB:mongoimport
– introdujo un nuevo parámetro que le permite importar datos CSV como una matriz.
--useArrayIndexFields
El parámetro interpreta los números naturales en los campos como índices de matriz al importar archivos CSV o TSV.
Ejemplo
Supongamos que tenemos un archivo CSV llamado tags.csv
que se ve así:
tags.0,tags.1,tags.2,tags.3
html,css,sql,xml
Podemos importar eso usando --useArrayIndexFields
parámetro, lo que hará que mongoimport
para interpretar los números en los encabezados de columna como índices de matriz.
Ejemplo:
mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=tags.csv
Salida:
2021-01-03T20:55:44.284+1000 no collection specified 2021-01-03T20:55:44.284+1000 using filename 'tags' as collection 2021-01-03T20:55:44.297+1000 connected to: mongodb://localhost/ 2021-01-03T20:55:44.330+1000 1 document(s) imported successfully. 0 document(s) failed to import.
Como no especifiqué un nombre de colección, creó una colección llamada tags
(según el nombre del archivo), luego importé mi documento.
Vayamos al caparazón de mongo y revisemos la colección.
db.tags.find()
Resultado:
{ "_id" : ObjectId("5ff1a2b0300ed79d9836882f"), "tags" : [ "html", "css", "sql", "xml" ] }
Podemos ver que los datos CSV se han importado como una matriz JSON.
Aquí está de nuevo, pero con un formato más agradable, lo que podría hacer que la matriz sea más fácil de ver.
db.tags.find().pretty()
Resultado:
{ "_id" : ObjectId("5ff1a2b0300ed79d9836882f"), "tags" : [ "html", "css", "sql", "xml" ] }
Combinado con otros datos CSV
El archivo CSV del ejemplo anterior solo constaba de datos de matriz. Pero también podemos incluir otros datos en el archivo.
Aquí hay un ejemplo de un archivo CSV llamado articles.csv
que contiene otros datos.
_id,title,body,tags.0,tags.1,tags.2,tags.3 1.0,Web,blah,html,css,sql,xml 2.0,Animals,blah 2,cats,dogs 3.0,Plants,blah 3,trees 4.0,Oceans,blah 4
Importemos ese archivo:
mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=articles.csv
Salida:
2021-01-03T21:14:38.286+1000 no collection specified 2021-01-03T21:14:38.287+1000 using filename 'articles' as collection 2021-01-03T21:14:38.336+1000 connected to: mongodb://localhost/ 2021-01-03T21:14:38.407+1000 4 document(s) imported successfully. 0 document(s) failed to import.
Ahora saltemos al caparazón de mongo y revisemos la colección.
db.articles.find()
Resultado:
{ "_id" : 1, "title" : "Web", "body" : "blah", "tags" : [ "html", "css", "sql", "xml" ] } { "_id" : 3, "title" : "Plants", "body" : "blah 3", "tags" : [ "trees" ] } { "_id" : 4, "title" : "Oceans", "body" : "blah 4" } { "_id" : 2, "title" : "Animals", "body" : "blah 2", "tags" : [ "cats", "dogs" ] }
Vamos a embellecerlo un poco.
db.articles.find().pretty()
Resultado:
{ "_id" : 1, "title" : "Web", "body" : "blah", "tags" : [ "html", "css", "sql", "xml" ] } { "_id" : 3, "title" : "Plants", "body" : "blah 3", "tags" : [ "trees" ] } { "_id" : 4, "title" : "Oceans", "body" : "blah 4" } { "_id" : 2, "title" : "Animals", "body" : "blah 2", "tags" : [ "cats", "dogs" ] }
Entonces podemos ver que los documentos se crearon como documentos JSON/BSON perfectos y se crearon matrices para los datos relevantes.
Observe que no se ha creado ninguna matriz para el documento 4. Esto se debe a que no se proporcionaron datos de matriz en el archivo CSV. Entonces, en lugar de crear un campo con una matriz vacía, no creó el campo ni la matriz.