Importdienstprogramm von MongoDB – mongoimport
– Einführung eines neuen Parameters, mit dem Sie CSV-Daten als Array importieren können.
Die --useArrayIndexFields
Parameter interpretiert natürliche Zahlen in Feldern als Array-Indizes beim Importieren von CSV- oder TSV-Dateien.
Beispiel
Angenommen, wir haben eine CSV-Datei namens tags.csv
das sieht so aus:
tags.0,tags.1,tags.2,tags.3
html,css,sql,xml
Wir können das mit --useArrayIndexFields
importieren Parameter, der mongoimport
bewirkt um die Zahlen in den Spaltenüberschriften als Array-Indizes zu interpretieren.
Beispiel:
mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=tags.csv
Ausgabe:
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.
Da ich keinen Sammlungsnamen angegeben habe, wurde eine Sammlung namens tags
erstellt (basierend auf dem Namen der Datei) und dann mein Dokument importiert.
Lassen Sie uns zur Mongo-Muschel springen und die Sammlung überprüfen.
db.tags.find()
Ergebnis:
{ "_id" : ObjectId("5ff1a2b0300ed79d9836882f"), "tags" : [ "html", "css", "sql", "xml" ] }
Wir können sehen, dass die CSV-Daten als JSON-Array importiert wurden.
Hier ist es noch einmal, aber mit schönerer Formatierung, die das Array vielleicht besser sichtbar macht.
db.tags.find().pretty()
Ergebnis:
{ "_id" : ObjectId("5ff1a2b0300ed79d9836882f"), "tags" : [ "html", "css", "sql", "xml" ] }
Kombiniert mit anderen CSV-Daten
Die CSV-Datei im vorherigen Beispiel bestand nur aus Array-Daten. Aber wir können auch andere Daten in die Datei aufnehmen.
Hier ist ein Beispiel für eine CSV-Datei namens articles.csv
die andere Daten enthält.
_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
Lassen Sie uns diese Datei importieren:
mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=articles.csv
Ausgabe:
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.
Lassen Sie uns jetzt zur Mongo-Muschel springen und die Sammlung überprüfen.
db.articles.find()
Ergebnis:
{ "_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" ] }
Lass es uns ein wenig aufpeppen.
db.articles.find().pretty()
Ergebnis:
{ "_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" ] }
Wir können also sehen, dass die Dokumente als perfekte JSON/BSON-Dokumente erstellt wurden und Arrays für die relevanten Daten erstellt wurden.
Beachten Sie, dass für Dokument 4 kein Array erstellt wurde. Dies liegt daran, dass in der CSV-Datei keine Array-Daten bereitgestellt wurden. Anstatt also ein Feld mit einem leeren Array zu erstellen, wurde weder das Feld noch das Array erstellt.