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 }
)