首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取mongodb中分片键值的分片id

获取mongodb中分片键值的分片id
EN

Stack Overflow用户
提问于 2019-01-15 18:30:57
回答 1查看 824关注 0票数 1

我在分片集群中有两个副本集,其中的文档是按userId字段分片的。

有没有办法查询给定文档中包含哪个分片(副本集)(通过_id或分片关键字段),而不需要在客户端重新实现shadring key shard

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-16 05:10:20

您可以使用查询explain()来标识文档的分片,根据分片键进行查询。

获胜的计划应该有一个SINGLE_SHARD阶段,其中包含一个与下面类似的相等查询(为了清晰起见,需要修剪一些额外的输出):

代码语言:javascript
复制
> db.users.find({userId:123}).explain().queryPlanner.winningPlan
{
    "stage" : "SINGLE_SHARD",
    "shards" : [
        {
            "shardName" : "shard01",
            "plannerVersion" : 1,
            "namespace" : "test.users",
            "indexFilterSet" : false,
            "parsedQuery" : {
                "userId" : {
                    "$eq" : 123
                }
            },
        }
    ]
}

如果您只需要分片名称,则可以使用JavaScript表示法来引用完整路径:

代码语言:javascript
复制
> db.users.find({userId:123}).explain().queryPlanner.winningPlan.shards[0].shardName
shard01
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54197047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档