Saat Anda menggunakan mongoimport
untuk mengimpor file ke MongoDB, Anda memiliki opsi untuk menggabungkan dokumen yang ada dengan dokumen yang Anda impor.
Dalam hal ini, jika dokumen yang diimpor memiliki _id
yang sama nilai sebagai yang sudah ada dalam koleksi yang Anda impor, dokumen yang ada akan digabungkan dengan yang sedang diimpor.
Anda juga dapat menentukan bidang lain (selain _id
bidang) menjadi bidang yang cocok jika diperlukan.
Saat Anda menggabungkan dokumen, dokumen yang dihasilkan akan menggabungkan data yang ada dengan data baru apa pun yang ada di file yang diimpor. Setiap data yang sama akan tetap sama. Setiap data yang bertentangan akan mengakibatkan data file yang diimpor menimpa data yang ada. Jika dokumen yang diimpor tidak berisi bidang yang ada di dokumen terkait dalam koleksi MongoDB, maka bidang itu akan tetap tidak berubah dalam koleksi (yaitu, tidak akan dihapus atau diubah).
Cara menggabungkan dokumen dengan mongoimport
adalah menggunakan merge
modus.
Contoh
Misalkan kita memiliki koleksi yang disebut pets
yang berisi dokumen-dokumen berikut:
db.pets.find()
Hasil:
{ "_id" :1, "name" :"Wag", "type" :"Anjing" }{ "_id" :2, "name" :"Bark", "type" :"Anjing" }{ "_id" :3, "name" :"Meow", "type" :"Cat" }
Dan kami memiliki file JSON berikut bernama pets.json
:
{"_id":2.0,"name":"Fetch","type":"Dog","weight":40.0}{"_id":3.0,"weight":10.0}{"_id":4.0,"name":"Hop","type":"Kangaroo","weight":60.0}
Perintah berikut mengimpor file JSON ke dalam koleksi:
mongoimport --db=PetHotel --collection=pets --mode=merge --file=data/pets.json
Ini menggunakan merge
mode untuk menggabungkan dokumen yang cocok dengan yang diimpor.
Periksa Hasil
Yuk intip koleksinya sekarang.
db.pets.find()
Hasil:
{ "_id" :1, "name" :"Wag", "type" :"Anjing" }{ "_id" :2, "name" :"Ambil", "type" :"Anjing", " weight" :40 }{ "_id" :3, "name" :"Meow", "type" :"Cat", "weight" :10 }{ "_id" :4, "name" :"Hop", " type" :"Kanguru", "berat" :60 }
Kita dapat melihat bahwa dokumen 1 tidak berubah, dokumen 2 telah diubah namanya menjadi Fetch
, dan juga memiliki weight
bidang ditambahkan.. Dokumen 3 juga memiliki bidang bobot yang ditambahkan, dan dokumen 4 telah dimasukkan.
Ubah Bidang Bagian Atas
Anda dapat menggunakan --upsertFields
parameter untuk menentukan bidang selain _id
untuk mencocokkan. Saat menggunakan parameter ini, berikan kolom sebagai daftar yang dipisahkan koma.
Misalkan kita memiliki file JSON lain bernama pets2.json
yang ingin kita impor, dan tampilannya seperti ini:
{"name":"Wag","type":"Dog","weight":20.0,"gooddog":true}{"name":"Bubbles","type":"Ikan"}Dokumen ini tidak menyertakan
_id
bidang, jadi kami harus mencocokkan bidang lain yang secara unik mengidentifikasi setiap dokumen. Dalam hal ini kita bisa menggunakanname
dantype
bidang.Oleh karena itu, kita dapat menggunakan
mongoimport
berikut ini:perintah:mongoimport --db=PetHotel --collection=pets --mode=merge --upsertFields=name,type --file=data/pets2.json
Sekarang mari kita periksa kembali koleksinya:
db.pets.find()
Hasil:
{ "_id" :1, "name" :"Wag", "type" :"Dog", "gooddog" :true, "weight" :20 }{ "_id" :2, "name" :" Fetch", "type" :"Anjing", "weight" :40 }{ "_id" :3, "name" :"Meow", "type" :"Cat", "weight" :10 }{ "_id" :4, "name" :"Hop", "type" :"Kangaroo", "weight" :60 }{ "_id" :ObjectId("5ff0548dd991410169412300"), "name" :"Bubbles", "type" :" Ikan" }Kita dapat melihat bahwa Wag telah diperbarui (tetapi
_id
nilainya tetap sama).Gelembung di sisi lain, tidak cocok untuk bidang upsert dan oleh karena itu dimasukkan.
Periksa
mongoimport
mongoimport
adalah bagian dari paket Alat Database MongoDB. Alat Database MongoDB adalah rangkaian utilitas baris perintah untuk bekerja dengan MongoDB.Jika Anda tidak yakin apakah Anda memiliki MongoDB Database Tools/
mongoimport
terinstal, coba jalankan perintah berikut di Terminal atau Command Prompt Anda untuk memeriksa:mongoimport --version
Jika Anda memilikinya, Anda akan melihat informasi versi, dll. Jika Anda tidak memilikinya, Anda dapat menggunakan petunjuk penginstalan di situs web MongoDB untuk menginstalnya ke sistem Anda.
Di mana Menjalankan Perintah?
Jangan lupa, Anda harus menjalankan
mongoimport
perintah dari baris perintah sistem Anda (mis. Terminal baru atau jendela Prompt Perintah).Jangan jalankan dari
mongo
kerang.