MongoDB Manual (Version 4.2)> MongoDB CRUD Operations > Write Concern
写关注描述了MongoDB请求的对单机版mongod或副本集 或 分片集群的写操作的确认级别。在分片群集中,mongos
实例会将写关注传递给分片。本文我们将从下方几个方面了解MongoDB写关注。
写关注规范
确认行为
为写关注计算 Majority 数量
注意:对于多文档事务,写关注是相对于事务级别而不是单个操作级别。不要为事务中的各个写操作显式设置写关注点。
写关注规范
写关注可以包含以下字段:{ w: , j: , wtimeout: }
使用w选项来请求确认写入操作已传播到指定数量的
mongod
实例或具有指定标签的mongod
实例。j 选项,用于请求确认已将写操作写入磁盘日志中
wtimeout 选项指定一个时间限制,以防止无限期地阻塞写操作。
w
选项
w
选项请求确认写入操作已传播到指定数量的mongod
实例或具有指定标签的mongod
实例。
使用w
选项,可以使用以下w:
写关注点:
值 | 描述 |
---|---|
|
请求确认写操作已传播到指定数量的mongod 实例。例如:请求确认写操作已传播到单机版mongod 或副本集中的主数据库。w: 1 是MongoDB默认的写关注。如果写操作在复制到其他任何从节点前已下线,则可以数据回滚。不要求确认写操作。但是,w: 0可能会将有关套接字异常和网络错误的信息返回给应用程序。如果写操作在复制到其他任何从节点前已下线,则可以数据回滚。如果指定w: 0 但指定j: true,则j: true优先于请求自单机版mongod 或副本集主节点的确认。如果w 大于1,则需要来自主节点和足够多保存有数据的从节点确认,以满足指定的写关注。例如,对于一个一主两从含有3个成员的副本集来说。指定w: 2 将需要主节点和一个从节点的确认。指定w: 3 将需要主节点和两个从节点的确认。注意:隐藏的,延迟的和优先级为0的成员都可以确认w: 写操作。延迟的从节点可以不早于已配置的slaveDelay 返回写确认。有关mongod 实例何时确认写入的信息,请参见确认行为。 |
"majority" |
请求确认写操作已传播到所计算的大多数带有数据的投票成员{(}即,主节点和从节点的members[n\].votes 大于0}。例如,考虑一个具有3个投票成员的副本集,即主-从-从(P-S-S)。对于此副本集,计算出的多数为2,并且写入必须传播到主节点和一个从节点,以向客户端确认写关注。注意: 隐藏的,延迟的和优先级为0以及members[n\].votes 大于0的成员都可以确认"majority" 写操作。延迟的从节点可以不早于已配置的slaveDelay 返回写确认。在写操作w: "majority" 确认返回给客户端之后,客户端可以使用"majority" 读关注读取该写操作的结果。有关mongo |