Utilitas impor MongoDB – mongoimport
– memperkenalkan parameter baru yang memungkinkan Anda mengimpor data CSV sebagai larik.
--useArrayIndexFields
parameter menginterpretasikan bilangan asli dalam bidang sebagai indeks larik saat mengimpor file CSV atau TSV.
Contoh
Misalkan kita memiliki file CSV bernama tags.csv
yang terlihat seperti ini:
tags.0,tags.1,tags.2,tags.3
html,css,sql,xml
Kita dapat mengimpornya menggunakan --useArrayIndexFields
parameter, yang akan menyebabkan mongoimport
untuk menafsirkan angka-angka di header kolom sebagai indeks array.
Contoh:
mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=tags.csv
Keluaran:
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.
Karena saya tidak menentukan nama koleksi, itu membuat koleksi yang disebut tags
(berdasarkan nama file), lalu import dokumen saya.
Mari lompat ke cangkang mongo dan periksa koleksinya.
db.tags.find()
Hasil:
{ "_id" : ObjectId("5ff1a2b0300ed79d9836882f"), "tags" : [ "html", "css", "sql", "xml" ] }
Kita dapat melihat bahwa data CSV telah diimpor sebagai larik JSON.
Ini dia lagi tetapi dengan pemformatan yang lebih bagus, yang mungkin membuat array lebih mudah dilihat.
db.tags.find().pretty()
Hasil:
{ "_id" : ObjectId("5ff1a2b0300ed79d9836882f"), "tags" : [ "html", "css", "sql", "xml" ] }
Dikombinasikan dengan Data CSV Lainnya
File CSV pada contoh sebelumnya hanya terdiri dari data array. Tapi kita juga bisa memasukkan data lain ke dalam file.
Berikut ini contoh file CSV bernama articles.csv
yang berisi data lain.
_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
Mari impor file itu:
mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=articles.csv
Keluaran:
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.
Sekarang mari kita beralih ke cangkang mongo dan memeriksa koleksinya.
db.articles.find()
Hasil:
{ "_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" ] }
Mari kita percantik sedikit.
db.articles.find().pretty()
Hasil:
{ "_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" ] }
Jadi kita dapat melihat bahwa dokumen telah dibuat sebagai dokumen JSON/BSON yang sempurna, dan array telah dibuat untuk data yang relevan.
Perhatikan bahwa tidak ada larik yang dibuat untuk dokumen 4. Ini karena tidak ada data larik yang disediakan dalam file CSV. Jadi, alih-alih membuat bidang dengan larik kosong, itu tidak membuat bidang atau larik.