Nástroj pro import MongoDB – mongoimport
– představil nový parametr, který umožňuje importovat data CSV jako pole.
--useArrayIndexFields
Parametr interpretuje přirozená čísla v polích jako indexy pole při importu souborů CSV nebo TSV.
Příklad
Předpokládejme, že máme soubor CSV s názvem tags.csv
vypadá to takto:
tags.0,tags.1,tags.2,tags.3
html,css,sql,xml
Můžeme to importovat pomocí --useArrayIndexFields
parametr, který způsobí mongoimport
interpretovat čísla v záhlaví sloupců jako indexy pole.
Příklad:
mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=tags.csv
Výstup:
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.
Vzhledem k tomu, že jsem nespecifikoval název kolekce, vytvořila kolekci s názvem tags
(na základě názvu souboru), poté importoval můj dokument.
Pojďme přeskočit k mongo shell a zkontrolovat sbírku.
db.tags.find()
Výsledek:
{ "_id" : ObjectId("5ff1a2b0300ed79d9836882f"), "tags" : [ "html", "css", "sql", "xml" ] }
Vidíme, že data CSV byla importována jako pole JSON.
Tady je to znovu, ale s hezčím formátováním, které by mohlo pole lépe vidět.
db.tags.find().pretty()
Výsledek:
{ "_id" : ObjectId("5ff1a2b0300ed79d9836882f"), "tags" : [ "html", "css", "sql", "xml" ] }
V kombinaci s dalšími daty CSV
Soubor CSV v předchozím příkladu sestával pouze z dat pole. Do souboru však můžeme zahrnout i jiná data.
Zde je příklad souboru CSV s názvem articles.csv
která obsahuje jiná data.
_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
Pojďme tento soubor importovat:
mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=articles.csv
Výstup:
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.
Nyní přeskočme ke skořápce mongo a zkontrolujme sbírku.
db.articles.find()
Výsledek:
{ "_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" ] }
Pojďme to trochu upravit.
db.articles.find().pretty()
Výsledek:
{ "_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" ] }
Můžeme tedy vidět, že dokumenty byly vytvořeny jako dokonalé dokumenty JSON/BSON a pro relevantní data byla vytvořena pole.
Všimněte si, že pro dokument 4 nebylo vytvořeno žádné pole. Je to proto, že v souboru CSV nebyla poskytnuta žádná data pole. Takže namísto vytvoření pole s prázdným polem nevytvořilo pole ani pole.