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

时间:2015-12-05 21:15:47

标签: mongodb atomic bulkinsert

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

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

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

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

1 个答案:

答案 0 :(得分:4)

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

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

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