sql >> Databáze >  >> NoSQL >> MongoDB

Importujte data CSV jako pole v MongoDB pomocí mongoimport

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.


  1. Jak získat pole z kolekce mongoDB?

  2. Efektivní způsob redis aktualizace členů sady

  3. Služba Mongodb se nespustí

  4. MongoDB:výstup 'id' místo '_id'