测试findOneAndUpdate upsert重复阻止

测试findOneAndUpdate upsert重复阻止

问题描述:

您好我有一个节点js代码,它使用findOneAndUpdate和Upsert = true创建一个新的mongodb文档(如果不存在)。测试findOneAndUpdate upsert重复阻止

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

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

文档级并发

WiredTiger用来写 操作文档级的并发控制。因此,多个客户端可以同时修改集合的不同 文档。

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

一些全局操作(通常涉及多个数据库的短期操作)仍需要全局“实例范围”锁定。某些其他操作(如删除集合)仍需要专有数据库锁定。

Document Level Concurrency

,并在单个集合相同_id永远不会存在_id上有一个唯一索引,所以即使你解释的情况发生,这将得到执行将创建一个新的第一查询文档和稍后的查询将更新它。

+0

重复我的意思是两个文件被创建与单独的id和但相同的数据值。 https://docs.mongodb.com/manual/reference/method/db.collection.findAndModify/查看Upsert和唯一索引的链接段落。 –

+0

好吧,我以为你只是通过匹配_id进行更新。就你而言,如果你试图匹配更新的字段不是唯一索引的,那么你可能会得到重复的文档。 – daemon24

+0

是的,我确实让他们独一无二,只是想知道我是否可以对它进行测试。 –