MongoDB 中的批量插入是原子的吗

Are bulk inserts atomic in MongoDB

我正在了解 mongodb。如果我创建一个批量写入,这个事务是全有还是全无?我有一个场景,我的用户可以删除他们的好友。

FRIEND 1  |  FRIEND 2
  User B     USER A
  User A     USER B

为此,我需要从两个双向关系中删除。为了保持一致性,我需要这些操作全部或全无,因为我不希望 2 个操作中只有 1 个成功,因为这会导致错误数据。阅读文档我找不到答案:

https://docs.mongodb.org/manual/core/bulk-write-operations/

db.collection.initializeOrderedBulkOp() "If an error occurs during the processing of one of the write operations, MongoDB will return without processing any remaining write operations in the list."

没有提及回滚操作,只是停止插入剩余操作。

db.collection.insert() 方法 "The insert() method, when passed an array of documents, performs a bulk insert, and inserts each document atomically."

您可以自己滚动。但使用 acknowledged write concern 必须通过您选择的驱动程序。 shell 已被确认,但驱动程序可能未被确认。

https://docs.mongodb.org/manual/core/write-concern/

try
   insert 1
catch 
  delete

try
   insert 2
catch 
  delete 1
  delete 2