假设文档的结构如下:
{_id:"session-01", status:"free"}
并且有 2 个并发操作执行以下findAndModify
操作:
db.collection.findAndModify({query:{status:"free"}, update:{status:"occupied"}, new:true})
我想要实现的是只有一个操作可以获得“免费”一个,并对其执行锁定,所以另一个操作必须为空。这就是 findAndModify 的作用吗?
假设文档的结构如下:
{_id:"session-01", status:"free"}
并且有 2 个并发操作执行以下findAndModify
操作:
db.collection.findAndModify({query:{status:"free"}, update:{status:"occupied"}, new:true})
我想要实现的是只有一个操作可以获得“免费”一个,并对其执行锁定,所以另一个操作必须为空。这就是 findAndModify 的作用吗?
根据官方文档,MongoDB 确实提供了独立的更新和返回。
这是 mongoDB 官方文档链接:Why findAndModify is Atomic。
这是一个很好的例子,说明 findAndModify 如何在 mongoDB 中工作:如何 findAndModify 工作
注意 - 我通常不喜欢发布链接,但我不想诋毁内容所有者。