Narzędzie importu MongoDB – mongoimport – wprowadzono nowy parametr, który pozwala importować dane CSV jako tablicę.
--useArrayIndexFields parametr interpretuje liczby naturalne w polach jako indeksy tablicy podczas importowania plików CSV lub TSV.
Przykład
Załóżmy, że mamy plik CSV o nazwie tags.csv to wygląda tak:
tags.0,tags.1,tags.2,tags.3
html,css,sql,xml
Możemy to zaimportować za pomocą --useArrayIndexFields parametr, który spowoduje mongoimport interpretować liczby w nagłówkach kolumn jako indeksy tablicy.
Przykład:
mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=tags.csv Wyjście:
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.
Widząc, że nie określiłem nazwy kolekcji, utworzył kolekcję o nazwie tags (na podstawie nazwy pliku), a następnie zaimportował mój dokument.
Przejdźmy do powłoki mongo i sprawdźmy kolekcję.
db.tags.find() Wynik:
{ "_id" : ObjectId("5ff1a2b0300ed79d9836882f"), "tags" : [ "html", "css", "sql", "xml" ] } Widzimy, że dane CSV zostały zaimportowane jako tablica JSON.
Tutaj znowu, ale z ładniejszym formatowaniem, co może sprawić, że tablica będzie łatwiejsza do zobaczenia.
db.tags.find().pretty() Wynik:
{
"_id" : ObjectId("5ff1a2b0300ed79d9836882f"),
"tags" : [
"html",
"css",
"sql",
"xml"
]
} Połączone z innymi danymi CSV
Plik CSV w poprzednim przykładzie składał się tylko z danych tablicowych. Ale możemy dołączyć również inne dane do pliku.
Oto przykład pliku CSV o nazwie articles.csv który zawiera inne dane.
_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
Zaimportujmy ten plik:
mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=articles.csv Wyjście:
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.
Przejdźmy teraz do powłoki mongo i sprawdźmy kolekcję.
db.articles.find() Wynik:
{ "_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" ] } Udekorujmy to trochę.
db.articles.find().pretty() Wynik:
{
"_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"
]
} Widzimy więc, że dokumenty zostały stworzone jako doskonałe dokumenty JSON/BSON, a tablice zostały stworzone dla odpowiednich danych.
Zauważ, że nie utworzono tablicy dla dokumentu 4. Jest tak, ponieważ w pliku CSV nie podano danych tablicy. Więc zamiast tworzyć pole z pustą tablicą, nie utworzył pola ani tablicy.