Docs 主页 → 开发应用程序 → MongoDB Manual
默认 MongoDB 读关注/写关注
读关注 (read concern)
点击放大
默认读关注
的默认读关注如下所示:
指定读关注:MongoDB 驱动程序
更多信息
有关可用都关注的更多信息,请参阅读关注。
写关注
默认写关注
从 MongoDB 5.0 开始,隐式默认写关注为 w: majority
。但是,对于包含仲裁节点的部署,需要特别考虑以下事项:
副本集的投票多数是 1 加投票成员数量的一半,四舍五入。如果数据承载投票成员的数量不超过投票多数,则默认写关注为
{ w: 1 }
。在所有其他场景中,默认写关注为
{ w: "majority" }
。
具体来说,MongoDB 使用以下公式来确定默认写关注:
if [ (#arbiters > 0) AND (#non-arbiters <= majority(#voting-nodes)) ] defaultWriteConcern = { w: 1 } else defaultWriteConcern = { w: "majority" }
例如,考虑以下部署以及各自的默认写关注:
非仲裁节点 | 仲裁节点 | 投票节点 | 多数投票节点 | 隐式默认写关注 |
---|---|---|---|---|
2 | 1 | 3 | 2 | { w: 1 } |
4 | 1 | 5 | 3 | { w: "majority" } |
在第一个示例中:
有 2 个非仲裁节点和 1 个仲裁节点,共有 3 个投票节点。
多数投票节点(1 加 3 的一半,四舍五入)为 2。
非仲裁节点的数量 (2) 等于多数投票节点 (2),导致隐式写关注为
{ w: 1 }
。
在第二个示例中:
共有 5 个投票节点,其中有 4 个非仲裁节点和 1 个仲裁节点。
多数投票节点(1 加 5 的一半,四舍五入)为 3。
非仲裁节点的数量 (4) 大于多数投票节点 (3),导致隐式写关注为
{ w: "majority" }
。
指定写关注:MongoDB 驱动程序
更多信息
有关可用写关注的更多信息,请参阅写关注。
因果一致性保证
使用因果一致的客户端会话时,只有在以下情况下,客户端会话才能保证因果一致性:
关联的读取操作使用
"majority"
读关注,而关联的写入操作使用
"majority"
写关注。