mongodb - 是否保证两个更新请求返回不同的结果?
问题描述
几天来我一直在寻找答案,但没有任何运气。我需要知道两台机器同时更新远程数据库时的预期行为。
更新方法
async function update () {
const filters = { orderNumber: 1, paid: false }
const updates = { paid: true }
const { modifiedCount } = await OrderModel.updateOne(filters, updates)
}
是否保证modifiedCount
一台机器始终为 0,另一台机器始终为 1?
解决方案
根据文档:
MongoDB 使用锁定和并发控制来防止客户端同时修改相同的数据。
和:
除了用于读取的共享 (S) 锁定模式和用于写入操作的排他 (X) 锁定模式之外,意向共享 (IS) 和意向排他 (IX) 模式表示使用更细粒度锁读取或写入资源的意向.
因此存在用于写操作的锁独占 (X)。
所以是的,只有一次更新会同时进行。
手术 | 数据库 | 收藏 |
---|---|---|
更新数据 | 独家的 | 独家的 |
推荐阅读
- flutter - 为什么flutter中有一些未定义名称的错误?我还遇到了其他问题如下
- java - JBPM 案例文件持久性问题和“运行时已被释放”
- spring - 有没有办法在 Spring 中持久化 Web 套接字断开连接时收到的最后一条消息?
- python - 打印 Flask 服务器响应状态代码时出现 JSONDecodeError
- html - Eclipse缩进html内容之间
- /li> 标签
- c++ - Vulkan 正确的帧同步
- bitbucket - 让 BitBucket 服务器通过不同的名称识别自述文件
- git - 适用于团队的 GIT - 团队无需部署到应用程序即可查看分支中的更改
- excel - 应用程序退出指令后显示错误 91
- lua - 如何在游戏中找到 roblox 地点的游戏 ID?