对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

sh.balancerCollectionStatus()(mongosh方法)

sh.balancerCollectionStatus(namespace)

返回一个文档,其中包含有关分片collection的数据块是否平衡的信息(即 不需要移动),或者由于排干、区域违规或数据块不平衡而需要移动。

重要

mongosh 方法

本页面提供 mongosh 方法的相关信息。这不是数据库命令或特定语言驱动程序(例如 Node.js)的相关文档。

有关数据库命令,请参阅 balancerCollectionStatus 命令。

如需了解 MongoDB API 驱动程序,请参阅特定语言的 MongoDB 驱动程序文档。

此方法可用于以下环境中托管的部署:

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

重要

M0 和 Flex 集群不支持此命令。有关更多信息,请参阅不支持的命令。

sh.balancerCollectionStatus()具有以下形式:

sh.balancerCollectionStatus( <namespace> )

sh.balancerCollectionStatus()方法采用以下参数:

Parameter
类型
说明

字符串

要分片的集合的命名空间,格式为 "<database>.<collection>"

使用访问控制运行时,用户必须对enableSharding 数据库和/或collection 具有 操作权限才能运行该方法。也就是说,用户必须具有授予以下 权限 的 角色

{ resource: { db: <database>, collection: <collection> }, actions: [ "enableSharding" ] }

内置 clusterManager 角色提供了相应的特权。

要检查分片集合test.contacts的数据段当前是否均衡,请连接到mongos实例并发出以下命令:

sh.balancerCollectionStatus("test.contacts")

如果不需要移动collection的数据块,该方法将返回类似于以下内容的输出:

{
"balancerCompliant" : true,
"ok" : 1,
"operationTime" : Timestamp(1583193238, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1583193238, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : Long(0)
}
}
}

如果所查询的命名空间正在进行数据段碎片整理,则sh.balancerCollectionStatus方法将返回类似于以下内容的输出:

{
"chunkSize": Long("128"),
"balancerCompliant": false,
"firstComplianceViolation": "defragmentingChunks",
"details": {
"currentPhase": "moveAndMergeChunks",
"progress": { "remainingChunksToProcess": 1 }
}
}

注意

数据块碎片整理分多个阶段进行。progress字段仅与当前阶段相关。

有关输出的说明,请参阅balancerCollectionStatus 输出。