文档菜单
文档首页
/
MongoDB 手册
/ / /

shardingState

本页内容

  • 兼容性
  • 语法
  • 行为
shardingState

shardingState 是一个管理员命令,用于报告mongod 是否是 分片集群 的成员。要运行此命令,您必须针对 admin 数据库运行。请参阅 db.adminCommand()

此命令在以下环境中可用

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

注意

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

该命令的语法如下

db.adminCommand(
{
shardingState: 1
}
)

对于 shardingState 来检测一个 mongod 是否是分片集群的成员,该 mongod 必须满足以下条件

  1. mongod 是复制集的主成员,并且

  2. mongod 实例是分片集群的成员。

如果 shardingState 检测到 mongod 是分片集群的成员,则 shardingState 返回类似于以下原型文档

{
"enabled" : true,
"configServer" : "<configdb-string>",
"shardName" : "<string>",
"shardHost" : "string:",
"versions" : {
"<database>.<collection>" : {
"placementVersion": Timestamp({ t: 1, i: 1024 }),
"timestamp": Timestamp({ t: 1682444810, i: 8 })
},
"<database>.<collection>" : {
"placementVersion": Timestamp({ t: 0, i: 0 }),
"timestamp": Timestamp({ t: 0, i: 0 })
}
},
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp({ t: 1682457265, i: 1 }),
"signature" : {
"hash" : BinData(0,"B2ViX7XLzFLS5Fl9XEuFXbwKIM4="),
"keyId" : NumberLong("6488045157173166092")
}
},
"operationTime" : Timestamp({ t: 1682457260, i: 1 })
}

否则,shardingState 将返回以下文档

{
"enabled" : false,
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp({t:1510716515, i: 1}),
"signature" : {
"hash" : BinData(0,"B2ViX7XLzFLS5Fl9XEuFXbwKIM4="),
"keyId" : NumberLong("6488045157173166092")
}
},
"operationTime" : Timestamp({t: 1510716515, i: 1})
}

使用配置服务器时,shardingState 的响应如下

{
"enabled" : false,
"ok" : 1,
"operationTime" : Timestamp({t: 1510767613, i: 1}),
"$gleStats" : {
"lastOpTime" : Timestamp({t: 0, i: 0}),
"electionId" : ObjectId("7fffffff0000000000000001")
},
"$clusterTime" : {
"clusterTime" : Timestamp({t: 1510767613, i: 1}),
"signature" : {
"hash" : BinData(0,"IwBZ4SZjIMI5NdM62NObV/R31GM="),
"keyId" : NumberLong("6488693018630029321")
}
}
}

注意

mongos 实例不提供 shardingState

警告

此命令在受影响的数据库上获取写锁,并且在完成之前将阻止其他操作;然而,该操作通常持续时间很短。

返回

shardCollection