Mongodb $in 查询,在带有slaveOkay()的replicaSet上

发布于 2025-01-02 15:10:01 字数 116 浏览 1 评论 0原文

我想知道一些事情:当我们在驱动程序上启用了 SlaveOkay() 的副本集环境中执行 $in 请求时(如果我理解正确的话,基本上是在不同从属设备上拆分查询),mongo 是否会原生拆分$在奴隶之间的数组中?提前致谢!

I'd like to know something : when we do a $in request in a replica-set environnement with slaveOkay() enabled on the driver (which is if I understood correctly basically splitting queries on the different slaves), is mongo natively splitting the $in array between slaves? Thanks by advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

合久必婚 2025-01-09 15:10:01

我不得不说不。为了有效地在从属设备之间分割 $in 数组,它们必须在发送查询之前进行分割(客户端/驱动程序需要有效地将查询更改为多个查询)并将它们合并回来以获得完整结果。

使用slaveOk,它只是将整个查询路由到一个成员,其中第一个选择将是次要/非主要。

如果您想(可能)将其分解到多个服务器上,那么您可以将 $in 数组分组为更小的块并执行多个并发查询。

I'd have to say no. For it to effectively split the $in array between slaves they'd have to be split before sending the query (the client/driver would need to change the query into multiple queries effectively) and merged them back for the full result.

With slaveOk it just routes the whole query to one member, where the first choice would be a secondary/non-primary.

If you want to (potentially) break this up across multiple servers then you could group the $in array into smaller chunks and do multiple concurrent queries.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文