Saat menggunakan mongoimport
untuk mengimpor file ke MongoDB, Anda memiliki opsi untuk menentukan mode yang akan digunakan. Mode ini menentukan apa yang terjadi jika sudah ada dokumen yang cocok dalam koleksi yang Anda coba impor.
Secara default, mongoimport
menggunakan insert
mode, tetapi ada mode lain yang dapat Anda gunakan. Mode yang Anda gunakan akan bergantung pada apa yang Anda coba lakukan.
Di bawah ini adalah ikhtisar dari setiap mode beserta contohnya.
Mode
Mode impor tersedia di mongoimport
adalah sebagai berikut:
Mode | Deskripsi |
---|---|
insert | Ini adalah mode default. Mode ini menyisipkan dokumen dari file impor. Jika dokumen yang cocok sudah ada dalam koleksi, terjadi kesalahan. Dokumen yang cocok adalah dokumen yang memiliki ID unik yang sama (seperti _id yang cocok field) sebagai dokumen dalam file impor. |
upsert | Mengganti dokumen yang ada di database dengan dokumen yang cocok dari file impor. Semua dokumen lain dimasukkan. |
merge | Menggabungkan dokumen yang ada yang cocok dengan dokumen dalam file impor dengan dokumen baru. Semua dokumen lain dimasukkan. |
delete | Menghapus dokumen yang ada di database yang cocok dengan dokumen di file impor. Dokumen yang tidak cocok tidak akan berpengaruh. |
Contoh cara kerja setiap mode ada di bawah.
Mode Sisipkan
Misalkan kita memiliki koleksi yang disebut pets
dengan dokumen sebagai berikut:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
Ternyata, itu diimpor dalam file bernama pets.json
.
Sekarang bayangkan kita memiliki file JSON lain bernama pets2.json
, yang berisi dokumen JSON berikut:
{ "_id" : 1, "weight": 40 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight": 10 } { "_id" : 3, "name" : "Scratch", "type" : "Cat", "weight": 5 } { "_id" : 4, "name" : "Bubbles", "type" : "Fish", "weight": 3 }
Inilah yang terjadi jika kami mencoba mengimpornya ke pets
kami koleksi saat menggunakan (default) insert
modus.
mongoimport --db=PetHotel --collection=pets --file=pets2.json
Keluaran:
2021-01-03T10:07:23.421+1000 connected to: mongodb://localhost/ 2021-01-03T10:07:23.422+1000 continuing through error: E11000 duplicate key error collection: PetHotel.pets index: _id_ dup key: { _id: 1 } 2021-01-03T10:07:23.422+1000 continuing through error: E11000 duplicate key error collection: PetHotel.pets index: _id_ dup key: { _id: 2 } 2021-01-03T10:07:23.422+1000 continuing through error: E11000 duplicate key error collection: PetHotel.pets index: _id_ dup key: { _id: 3 } 2021-01-03T10:07:23.423+1000 1 document(s) imported successfully. 3 document(s) failed to import.
Menurut pesan kesalahan itu, hanya satu dari empat dokumen yang diimpor. Tiga lainnya menyebabkan kesalahan karena memiliki kunci duplikat di _id
lapangan.
Sekarang mari kita lihat koleksinya.
db.pets.find()
Hasil:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" } { "_id" : 4, "name" : "Bubbles", "type" : "Fish", "weight" : 3 }
Jadi kita bisa melihat bahwa dokumen terakhir dimasukkan. Hal ini diharapkan, karena sebelumnya kami tidak memiliki dokumen dengan _id
nilai 4
.
Mode Peningkatan
Inilah yang terjadi jika kita menggunakan upsert
mode untuk menyisipkan dokumen yang sama.
mongoimport --db=PetHotel --collection=pets --mode=upsert --file=pets2.json
Keluaran:
2021-01-03T10:19:55.400+1000 connected to: mongodb://localhost/ 2021-01-03T10:19:55.444+1000 3 document(s) imported successfully. 0 document(s) failed to import.
Outputnya memberi tahu kita bahwa 3 dari 4 dokumen berhasil diimpor, dan tidak ada kegagalan.
Yuk cek koleksinya.
db.pets.find()
Hasil:
{ "_id" : 1, "weight" : 40 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Scratch", "type" : "Cat", "weight" : 5 } { "_id" : 4, "name" : "Bubbles", "type" : "Fish", "weight" : 3 }
Kita dapat melihat bahwa tiga dokumen pertama telah diganti dengan dokumen dari file impor. Dokumen keempat tetap sama seperti setelah pengimporan sebelumnya.
Perhatikan bahwa dokumen pertama telah kehilangan name
dan type
bidang. Ini karena upsert
mode menggantikan seluruh dokumen, dan dokumen pengganti kami hanya memiliki weight
bidang (serta _id
bidang).
Mode Gabung
Mari kita ubah pets2.json
our file sehingga terlihat seperti ini:
{ "_id" : 1, "name": "Wag", "type": "Dog" } { "_id" : 2, "name" : "Fetch" } { "_id" : 3, "name" : "Scratch" } { "_id" : 4, "name" : "Bubbles" } { "_id" : 5, "name" : "Hop", "type": "Kangaroo" }
Sekarang mari kita jalankan mongoimport
perintah lagi, tapi kali ini dalam merge
modus:
mongoimport --db=PetHotel --collection=pets --mode=merge --file=pets2.json
Keluaran:
2021-01-03T10:32:33.596+1000 connected to: mongodb://localhost/ 2021-01-03T10:32:33.607+1000 3 document(s) imported successfully. 0 document(s) failed to import.
Menurut output, 3 dokumen diimpor.
Mari kita lihat koleksinya.
db.pets.find()
Hasil:
{ "_id" : 1, "weight" : 40, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Fetch", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Scratch", "type" : "Cat", "weight" : 5 } { "_id" : 4, "name" : "Bubbles", "type" : "Fish", "weight" : 3 } { "_id" : 5, "name" : "Hop", "type" : "Kangaroo" }
Kita dapat melihat bahwa dokumen 1 dan 2 telah diperbarui, dan dokumen 5 telah dimasukkan. Mengenai dokumen 1, weight
bidang tetap meskipun dokumen impor tidak menyertakan bidang itu. Ini karena kami menggunakan merge
mode. Jika kita menggunakan upsert
mode (seperti pada contoh sebelumnya), weight
lapangan akan menghilang.
Mode Hapus
Saat Anda menggunakan delete
mode, semua dokumen yang cocok akan dihapus begitu saja. Dokumen yang tidak cocok tetap ada dalam koleksi.
Jadi mari kita lihat apa yang terjadi ketika kita mengimpor dokumen yang sama, tetapi kali ini beralih ke delete
modus.
mongoimport --db=PetHotel --collection=pets --mode=delete --file=pets2.json
Hasil:
2021-01-03T10:39:38.925+1000 connected to: mongodb://localhost/ 2021-01-03T10:39:38.926+1000 5 document(s) deleted successfully. 0 document(s) failed to delete.
Semua 5 dokumen dalam koleksi telah dihapus.
Mengubah 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.
Tidak yakin apakah Anda memiliki 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.
Tempat Menjalankan mongoimport
Perintah?
Anda perlu menjalankan mongoimport
perintah dari baris perintah sistem Anda (mis. Terminal baru atau jendela Prompt Perintah).
Jangan jalankan dari mongo
kerang.