MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Импортирайте CSV данни като масив в MongoDB с помощта на mongoimport

Помощната програма за импортиране на MongoDB – mongoimport – въведе нов параметър, който ви позволява да импортирате CSV данни като масив.

--useArrayIndexFields параметърът интерпретира естествените числа в полетата като индекси на масиви при импортиране на CSV или TSV файлове.

Пример

Да предположим, че имаме CSV файл, наречен tags.csv това изглежда така:

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

Можем да импортираме това с помощта на --useArrayIndexFields параметър, който ще предизвика mongoimport за интерпретиране на числата в заглавките на колоните като индекси на масиви.

Пример:

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

Изход:

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.

Тъй като не съм посочил име на колекция, тя създаде колекция, наречена tags (въз основа на името на файла), след което импортирах моя документ.

Нека преминем към черупката на монго и да проверим колекцията.

db.tags.find()

Резултат:

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

Можем да видим, че CSV данните са импортирани като JSON масив.

Ето го отново, но с по-добро форматиране, което може да направи масива по-лесен за виждане.

db.tags.find().pretty()

Резултат:

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

Комбинирано с други CSV данни

CSV файлът в предишния пример се състоеше само от данни от масив. Но можем да включим и други данни във файла.

Ето пример за CSV файл, наречен articles.csv който съдържа други данни.

_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

Нека импортираме този файл:

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

Изход:

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.

Сега нека преминем към черупката на монго и да проверим колекцията.

db.articles.find()

Резултат:

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

Нека го украсим малко.

db.articles.find().pretty()

Резултат:

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

Така можем да видим, че документите са създадени като перфектни JSON/BSON документи и са създадени масиви за съответните данни.

Забележете, че не е създаден масив за документ 4. Това е така, защото в CSV файла не са предоставени данни за масив. Така че вместо да създаде поле с празен масив, то не създаде полето или масива.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как мога да създам програма с помощта на c++ драйвер на mongodb?

  2. MongoDB count отделна стойност?

  3. MongoDB $atanh

  4. Външни ключове в монго?

  5. Коригирайте „дължина/ширина е извън границите“ в MongoDB при създаване на индекс на 2dsphere