node.js - MongoDB:手动锁定和解锁集合
问题描述
我想执行事务性读取,然后根据结果进行写入。
读取应该排队,直到读取和写入完成并且我手动解锁了集合。
那可能吗?
解决方案
读取应该排队,直到读取和写入完成并且我手动解锁了集合。
MongoDB Transactions不支持手动锁定集合。
您所描述的是一种悲观锁定行为。选择的文档在事务提交或回滚之前被锁定,这可能会导致死锁。
MongoDB Transactions 使用Optimistic Locking。这是一种在读取文档时记录内部版本号的策略。当文档被写回时,检查版本是否未被更改(由事务之外的其他进程)。
如果文档的版本与事务开始时记录的版本不同,事务将中止并且可以再次重试(取决于要求)。
另请参阅MongoDB 事务手册以获取更多信息。
附加信息:MongoDB v4+ 中提供了多文档事务。MongoDB v4.0.0-rc0 (Release Candidate) 于 2018 年 5 月 23 日发布。
推荐阅读
- c - 使用密码 ECDHE-RSA-AES128-GCM-SHA256 构建 openssl 服务
- jquery - 如何使用 JQuery 仅超链接表中的一列
- ios - 如何在没有订阅的情况下从 Apple Music 中获取歌曲?
- java - 如何使用 Java 流获取所有具有最高值的元素?
- firebase - 如何取消订阅()vue.js组件中的firebase集合
- javascript - jquery 菜单,从左侧滑动子菜单
- c# - 如何修复“无法识别的 guid 格式”?
- selenium - gunicorn[15246]:消息:“geckodriver”可执行文件需要在 PATH 中
- c++ - ESP32 / C++ 文件下载为字符串
- caching - 使用 Hazelcast 实现 Write-Behind Cache