2

rs.slaveOk()在 MongoDB 副本集中的从属成员上启用读取操作。

用什么功能来禁用它?

4

1 回答 1

2

只需键入rs.slaveOk(false).

在 shell 中,您可以看到为每个命令执行的代码是什么,因此,如果您提示rs.slaveOk(不带括号),您将得到以下内容:

rs.slaveOk
function (value) {
    return db.getMongo().setSlaveOk(value);
}

所以slaveOk实际上是一个接受布尔参数并调用的函数,setSlaveOk由以下代码组成:

db.getMongo().setSlaveOk
function (value) {
    if (value == undefined)
        value = true;
    this.slaveOk = value;
}

如您所见,setSlaveOk具有true默认值,因此通过指定 false 可以防止从辅助读取。

编辑:正如 dAm2K 在下面的评论中所说的那样,rs.slaveOk已从 MongoDB 4.4 版中弃用;只需使用rs.secondaryOk.

于 2016-10-26T11:03:57.017 回答