【发布时间】:2019-07-16 14:53:28
【问题描述】:
我在分片集群中有两个副本集,文档按userId 字段分片。
有什么方法可以查询哪个分片(副本集)包含给定文档(通过_id 或分片键字段),而无需在客户端重新实现分片键散列
【问题讨论】:
-
您是要查找散列分片键的值,还是要询问有关查找给定文档所在的分片的更一般的问题?您可以编辑您的问题,并提供更多有关您正在寻找的内容以及您正在使用的 MongoDB 的特定版本的信息吗?用于查询的散列分片键和分片的答案可以在解释计划输出中找到。例如:
db.users.find({userId:123}).explain().queryPlanner.winningPlan。 MongoDB 4.0+ shell 还有一个convertShardKeyToHashed()助手。 -
@Stennie 其“关于查找给定文档所在的分片的问题”,将在回来工作时尝试
convertShardKeyToHashed -
在这种情况下,您不需要
convertShardKeyToHashed(),因为可以通过解释输出更直接地找到分片名称。用于查询散列分片键值的解释输出中的indexBounds也将指示散列值。
标签: mongodb sharding replicaset