MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Mode Impor mongoimport

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.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Dokumen tersemat tanpa Array?

  2. MongoDB-sebagai-Layanan di Akun Amazon AWS Anda Sendiri

  3. MongoDB $substrBytes

  4. MongoDB $dalam Operator Pipa Agregasi

  5. Cara Memilih Hosting MongoDB Terbaik Untuk Bisnis Anda