mongodb - 为什么 Mongoid 不在分片环境中将 slaveOk 发送到 mongos?

标签 mongodb mongoid sharding

我可以从“mongos”控制台发起查询,并查看读取命中初选。我可以成功执行 rs.slaveOk(); 然后触发相同的查询,并看到读取命中辅助节点。

问题是无论我尝试什么,我都无法在 Mongoid 中获得查询击中次级。它似乎没有发送 slaveOk。我试过在 mongoid.yml 中设置 read::secondary,我也试过 read_secondary: true,但底层连接是不是副本集,所以我想这就是 mongoid 忽略它的原因。

有没有其他方法(除了创建我自己的连接池和设置 :slave_ok)让 mongoid 工作?我是否缺少一些神奇的未记录的 yml 设置?

最佳答案

由于 Mongoid 连接到单个 mongos 路由器,只需在 mongoid.yml 中的主机名条目下方添加以下行:

slave_ok: true

关于mongodb - 为什么 Mongoid 不在分片环境中将 slaveOk 发送到 mongos?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8053069/

相关文章:

node.js - POST 400 错误请求、React、Node/Express、MongoDB

c# - 来自 C# 的 MongoDB db.runCommand()

javascript - 为什么我的回调函数总是返回错误而不是响应

javascript - MongoDB:在数据库中查找所有小写/大写重复项

ruby - 如何使用 mongoid 获取最后 N 个文档?

mongodb - 助力车:插入后获取ID

database-design - 何时使用水平分区,何时使用数据库分片?

mongodb分片用户认证

mongodb - 如何使用spring数据mongodb聚合在组中使用sum和condition

ruby-on-rails-3 - Mongoid Embeds_many 不会保存在嵌套形式上