sql >> Database >  >> NoSQL >> MongoDB

Importeer CSV-gegevens als een array in MongoDB met behulp van mongoimport

MongoDB's importhulpprogramma - mongoimport – een nieuwe parameter geïntroduceerd waarmee u CSV-gegevens als een array kunt importeren.

De --useArrayIndexFields parameter interpreteert natuurlijke getallen in velden als array-indexen bij het importeren van CSV- of TSV-bestanden.

Voorbeeld

Stel dat we een CSV-bestand hebben met de naam tags.csv dat ziet er zo uit:

tags.0,tags.1,tags.2,tags.3
html,css,sql,xml

We kunnen dat importeren met behulp van de --useArrayIndexFields parameter, die mongoimport . veroorzaakt om de getallen in de kolomkoppen te interpreteren als matrixindexen.

Voorbeeld:

mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=tags.csv

Uitgang:

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.

Aangezien ik geen collectienaam heb opgegeven, heeft het een collectie gemaakt met de naam tags (gebaseerd op de naam van het bestand) en vervolgens mijn document geïmporteerd.

Laten we naar de mongo-schelp springen en de collectie bekijken.

db.tags.find()

Resultaat:

{ "_id" : ObjectId("5ff1a2b0300ed79d9836882f"), "tags" : [ "html", "css", "sql", "xml" ] }

We kunnen zien dat de CSV-gegevens zijn geïmporteerd als een JSON-array.

Hier is het weer, maar met een mooiere opmaak, waardoor de array misschien gemakkelijker te zien is.

db.tags.find().pretty()

Resultaat:

{
	"_id" : ObjectId("5ff1a2b0300ed79d9836882f"),
	"tags" : [
		"html",
		"css",
		"sql",
		"xml"
	]
}

Gecombineerd met andere CSV-gegevens

Het CSV-bestand in het vorige voorbeeld bestond alleen uit arraygegevens. Maar we kunnen ook andere gegevens in het bestand opnemen.

Hier is een voorbeeld van een CSV-bestand met de naam articles.csv die andere gegevens bevat.

_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

Laten we dat bestand importeren:

mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=articles.csv

Uitgang:

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.

Laten we nu naar de mongo-schelp springen en de collectie bekijken.

db.articles.find()

Resultaat:

{ "_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" ] }

Laten we het een beetje opfleuren.

db.articles.find().pretty()

Resultaat:

{
	"_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"
	]
}

We kunnen dus zien dat de documenten zijn gemaakt als perfecte JSON/BSON-documenten en dat er arrays zijn gemaakt voor de relevante gegevens.

Merk op dat er geen array is gemaakt voor document 4. Dit komt omdat er geen arraygegevens zijn opgegeven in het CSV-bestand. Dus in plaats van een veld met een lege array te maken, heeft het niet het veld of de array gemaakt.


  1. Hoe maak je veilig verbinding met Heroku Redis via de opdrachtregel?

  2. Ga:maak io.Writer-interface om in te loggen op de mongodb-database

  3. Koppelen en maken van MongoDB-joins met SQL:deel 1

  4. Hoe SCAN te gebruiken met de MATCH-optie in Predis