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

Bagaimana cara melanjutkan penyisipan setelah kesalahan kunci duplikat menggunakan PyMongo

Anda perlu menggunakan insert_many metode dan atur opsi yang dipesan ke False .

db_stock.insert_many(<list of documents>)

Seperti yang disebutkan dalam dipesan dokumentasi opsi:

dipesan (opsional):Jika True (default) dokumen akan dimasukkan ke server secara serial, dalam urutan yang disediakan. Jika terjadi kesalahan, semua sisipan yang tersisa dibatalkan. Jika Salah, dokumen akan disisipkan di server dalam urutan sewenang-wenang, mungkin secara paralel, dan semua penyisipan dokumen akan dicoba.

Artinya, penyisipan akan terus berlanjut meskipun ada kesalahan kunci duplikat.

Demo:

>>> c.insert_many([{'_id': 2}, {'_id': 3}])
<pymongo.results.InsertManyResult object at 0x7f5ca669ef30>
>>> list(c.find())
[{'_id': 2}, {'_id': 3}]
>>> try:
...     c.insert_many([{'_id': 2}, {'_id': 3}, {'_id': 4}, {'_id': 5}], ordered=False)
... except pymongo.errors.BulkWriteError:
...     list(c.find())
... 
[{'_id': 2}, {'_id': 3}, {'_id': 4}, {'_id': 5}]

Seperti yang Anda lihat dokumen dengan _id 4, 5 dimasukkan ke dalam koleksi.

Perlu dicatat bahwa ini juga dimungkinkan di shell menggunakan insertMany metode. Yang Anda butuhkan hanyalah mengatur opsi tidak berdokumen ordered menjadi false .

db.collection.insertMany(
    [ 
        { '_id': 2 }, 
        { '_id': 3 },
        { '_id': 4 }, 
        { '_id': 5 }
    ],
    { 'ordered': false }
)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb menemukan hasil yang dibuat berdasarkan tanggal hari ini

  2. Bagaimana memproyeksikan indeks array setelah melepas array dengan kerangka kerja agregasi MongoDB

  3. MongoDB GPG - Tanda Tangan Tidak Valid

  4. Inisialisasi data pada mongo dockerized

  5. MongoDB di AWS:Bagaimana Cara Memilih Jenis Instans EC2 yang Tepat untuk Server MongoDB Anda?