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

use*_*127 3 bulkinsert atomic mongodb

我正在学习mongodb。如果我创建批量写入,此事务是全部还是全部?我有一个场景,我的用户可以删除他们的朋友。

FRIEND 1  |  FRIEND 2
  User B     USER A
  User A     USER B
Run Code Online (Sandbox Code Playgroud)

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

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

Gab*_*bow 6

db.collection.initializeOrderedBulkOp() “如果在处理其中一个写入操作期间发生错误,MongoDB 将返回而不处理列表中的任何剩余写入操作。”

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

db.collection.insert() 方法 “insert() 方法在传递文档数组时执行批量插入,并以原子方式插入每个文档。”

你可以推出自己的。但是使用必须通过您选择的驱动程序进行的确认写入问题。shell 已确认,但驱动程序可能未确认。

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

try
   insert 1
catch 
  delete

try
   insert 2
catch 
  delete 1
  delete 2
Run Code Online (Sandbox Code Playgroud)