对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。

游标.readPref()(mongosh方法)

cursor.readPref(mode, tagSet, hedgeOptions)

重要

mongosh 方法

本页面提供 mongosh 方法的相关信息。这不是 特定于语言的驱动程序(例如 Node.js)的文档。

如需了解 MongoDB API 驱动程序,请参阅特定语言的 MongoDB 驱动程序文档。

将readPref()附加到游标以控制客户端如何将查询路由到副本集的成员。

注意

在从数据库检索任何文档之前,必须对游标应用 readPref()。

Parameter
类型
说明

字符串

文档数组

可选。 用于将读取定位到具有指定标签的成员的标签集。 如果使用primary ,则tagSet不可用。

有关详细信息,请参阅读取偏好(read preference)标签集列表。

文档

可选。 指定是否启用对冲读的文档。

{ enabled: <boolean> }

enabled字段默认为 true;即指定空文档{ }相当于指定{ enabled: true } 。

对冲读可用于分片集群。要使用对冲读,mongos 必须有 enabled support 用于对冲读(默认值),非 primary 读取偏好必须启用对冲读。

默认情况下,读取偏好(read preference)nearest允许在分片集群上使用对冲读;即默认情况下具有{ enabled: true } 。

readPref() 不支持读取偏好的读取偏好 maxStalenessSeconds 选项。

此方法可用于以下环境中托管的部署:

  • MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务

注意

所有 MongoDB Atlas 集群都支持此命令。有关 Atlas 对所有命令的支持的信息,请参阅不支持的命令。

以下操作使用读取偏好模式将读取定位到从节点成员。

db.collection.find({ }).readPref( "secondary")

要以特定标签定位从节点,请包含模式和 tagSet 数组:

db.collection.find({ }).readPref( "secondary", [ { "datacenter": "B" }, // First, try matching by the datacenter tag { "region": "West"}, // If not found, then try matching by the region tag { } // If not found, then use the empty document to match all eligible members ])

在从节点选择过程中,MongoDB 会尝试首先找到带有datacenter: "B"标签的从节点。

  • 如果找到,MongoDB 会将符合条件的从节点限制为带有datacenter: "B"标签的从节点,并忽略其余标签。

  • 如果未找到,MongoDB 会尝试查找带有"region": "West"标签的从节点。

    • 如果找到,MongoDB 会将符合条件的从节点限制为带有"region": "West"标签的从节点。

    • 如果未找到,MongoDB 将使用任何符合条件的从节点。

有关详细信息,请参阅标签匹配顺序。

对于分片集群,您可以为非主节点读取偏好启用对冲读。要使用对冲读,mongos 必须有 enabled support 用于对冲读(默认值),非 primary 读取偏好必须启用对冲读。

要使用对冲读来定位分片集群上的从节点,请同时包含模式和对冲选项,如下例所示:

  • 没有标签集

    db.collection.find({ }).readPref( "secondary", // mode null, // tag set { enabled: true } // hedge options)
  • 有标签集

    db.collection.find({ }).readPref( "secondary", // mode [ { "datacenter": "B" }, { } ], // tag set { enabled: true } // hedge options)
给本页内容打分

在此页面上