Bạn cần sử dụng insert_many
và đặt tùy chọn được sắp xếp thành False
.
db_stock.insert_many(<list of documents>)
Như đã đề cập trong đã đặt hàng tài liệu tùy chọn:
đã đặt hàng (tùy chọn):Nếu True (mặc định), các tài liệu sẽ được chèn vào máy chủ theo thứ tự được cung cấp. Nếu xảy ra lỗi, tất cả các lần chèn còn lại sẽ bị hủy bỏ. Nếu Sai, tài liệu sẽ được chèn trên máy chủ theo thứ tự tùy ý, có thể song song và tất cả các thao tác chèn tài liệu sẽ được cố gắng thực hiện.
Điều đó có nghĩa là quá trình chèn sẽ tiếp tục ngay cả khi có lỗi khóa trùng lặp.
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}]
Như bạn có thể thấy tài liệu với _id
4, 5 đã được chèn vào bộ sưu tập.
Cần lưu ý rằng điều này cũng có thể xảy ra trong shell bằng cách sử dụng insertMany
phương pháp. Tất cả những gì bạn cần là đặt tùy chọn không có giấy tờ ordered
thành false
.
db.collection.insertMany(
[
{ '_id': 2 },
{ '_id': 3 },
{ '_id': 4 },
{ '_id': 5 }
],
{ 'ordered': false }
)