测试findOneAndUpdate upsert重复预防

时间:2017-11-25 14:24:36

标签: node.js mongodb testing mongoose mean-stack

您好我有一个节点js代码,它使用带有Upsert = true的findOneAndUpdate来创建一个新的mongodb文件(如果不存在)。

我想测试两个异步线程是否同时调用我的代码然后它会创建重复项。

甚至可以测试吗?我怎样才能做到这一点。我是测试的初学者。

1 个答案:

答案 0 :(得分:0)

  

文档级并发

     

WiredTiger使用文档级并发控制进行写入   操作。因此,多个客户端可以修改不同的   同时收集文件。

     

对于大多数读写操作,WiredTiger使用乐观   并发控制。 WiredTiger仅在全局使用意图锁,   数据库和集合级别。当存储引擎检测到时   两个操作之间的冲突,一个会产生写冲突   导致MongoDB透明地重试该操作。

     

一些全球业务,通常是涉及的短期业务   多个数据库仍需要全局“实例范围”锁。一些   其他操作,例如删除集合,仍然需要   独家数据库锁。

Document Level Concurrency

在单个集合中,同一个_id将永远不会存在_id上有唯一索引,因此即使您要解释的情况发生,第一个将执行的查询将创建一个新文档,后一个查询将更新它