Utilità di importazione di MongoDB – mongoimport
– introdotto un nuovo parametro che consente di importare dati CSV come un array.
Il --useArrayIndexFields
Il parametro interpreta i numeri naturali nei campi come indici di matrice durante l'importazione di file CSV o TSV.
Esempio
Supponiamo di avere un file CSV chiamato tags.csv
assomiglia a questo:
tags.0,tags.1,tags.2,tags.3
html,css,sql,xml
Possiamo importarlo usando --useArrayIndexFields
parametro, che causerà mongoimport
per interpretare i numeri nelle intestazioni di colonna come indici di matrice.
Esempio:
mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=tags.csv
Uscita:
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.
Dato che non ho specificato un nome di raccolta, ha creato una raccolta chiamata tags
(in base al nome del file), quindi ho importato il mio documento.
Passiamo alla mongo shell e controlliamo la collezione.
db.tags.find()
Risultato:
{ "_id" : ObjectId("5ff1a2b0300ed79d9836882f"), "tags" : [ "html", "css", "sql", "xml" ] }
Possiamo vedere che i dati CSV sono stati importati come un array JSON.
Eccolo di nuovo, ma con una formattazione migliore, che potrebbe rendere l'array più facile da vedere.
db.tags.find().pretty()
Risultato:
{ "_id" : ObjectId("5ff1a2b0300ed79d9836882f"), "tags" : [ "html", "css", "sql", "xml" ] }
Combinato con altri dati CSV
Il file CSV nell'esempio precedente consisteva solo di dati di matrice. Ma possiamo includere anche altri dati nel file.
Ecco un esempio di file CSV chiamato articles.csv
che contiene altri dati.
_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
Importiamo quel file:
mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=articles.csv
Uscita:
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.
Ora passiamo alla mongo shell e controlliamo la collezione.
db.articles.find()
Risultato:
{ "_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" ] }
Rendiamoci un po' belli.
db.articles.find().pretty()
Risultato:
{ "_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" ] }
Quindi possiamo vedere che i documenti sono stati creati come documenti JSON/BSON perfetti e sono stati creati array per i dati rilevanti.
Si noti che non è stato creato alcun array per il documento 4. Ciò è dovuto al fatto che nel file CSV non sono stati forniti dati di array. Quindi, anziché creare un campo con un array vuoto, non ha creato il campo o l'array.