Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

$shardedDataDistribution(聚合)

在此页面上

  • 定义
  • 语法
  • 输出字段
  • 行为
  • 示例
  • 返回所有分片数据分发指标
  • 返回特定分片的指标
  • 返回命名空间的指标
  • 确认无孤立文档
$shardedDataDistribution

6.0.3 版本新增

返回分片集合中的数据分布信息。

注意

此聚合阶段仅适用于 mongos

此聚合阶段必须在 admin 数据库上运行。用户必须具有 shardedDataDistribution 权限操作。

shardedDataDistribution 阶段使用以下语法:

db.aggregate( [
{ $shardedDataDistribution: { } }
] )

$shardedDataDistribution阶段输出数据库中每个分片集合的文档数组。 这些文档包含以下字段:

字段名称
数据类型
说明
ns
字符串
分片集合的命名空间。
shards
阵列
集合中的分片以及每个分片的数据分布信息。
shards.numOrphanedDocs
整型
分片中的孤立文档的数量。
shards.numOwnedDocuments
整型
分片拥有的文档数。
shards.ownedSizeBytes
整型
解压缩分片片拥有的文档大小(以字节为单位)。
shards.orphanedSizeBytes
整型
未压缩分片片中孤立文档的大小(以字节为单位)。

从 MongoDB8.0 $shardedDataDistribution开始,仅当主分片包含数据段或 孤立文档 时, 才会返回集合 主 分片的输出。

使用 Wiredmongod Tiger存储引擎的 非正常关闭后,$shardedDataDistribution 报告的大小和计数统计信息可能不准确。

偏差的大小取决于在最后一个检查点和非正常关闭之间执行的插入、更新或删除操作的次数。检查点通常每 60 秒出现一次。但是,如果 mongod 实例使用了非默认的 --syncdelay 设置,则检查点出现的次数可能会增多或减少。

mongod 的每个集合上运行 validate,以在非正常关闭之后恢复统计信息。

非正常关闭后:

  • validate 使用最新值更新输出collStats 中的计数统计数据

  • 其他统计信息(例如在 collStats 输出中插入或删除的文档数量)均为估计值。

要返回所有分片数据分布指标,请运行以下命令:

db.aggregate([
{ $shardedDataDistribution: { } }
])

示例输出:

[
{
"ns": "test.names",
"shards": [
{
"shardName": "shard-1",
"numOrphanedDocs": 0,
"numOwnedDocuments": 6,
"ownedSizeBytes": 366,
"orphanedSizeBytes": 0
},
{
"shardName": "shard-2",
"numOrphanedDocs": 0,
"numOwnedDocuments": 6,
"ownedSizeBytes": 366,
"orphanedSizeBytes": 0
}
]
}
]

要返回特定分片的分片数据分布指标,请运行以下命令:

db.aggregate([
{ $shardedDataDistribution: { } },
{ $match: { "shards.shardName": "<name of the shard>" } }
])

要返回命名空间的分片数据分布数据,请运行以下命令:

db.aggregate([
{ $shardedDataDistribution: { } },
{ $match: { "ns": "<database>.<collection>" } }
])

从 MongoDB 6.0.3开始, 您可以使用 $shardedDataDistribution阶段运行聚合,以确认没有剩余孤立文档:

db.aggregate([
{ $shardedDataDistribution: { } },
{ $match: { "ns": "<database>.<collection>" } }
])

$shardedDataDistribution 有类似如下的输出:

[
{
"ns": "test.names",
"shards": [
{
"shardName": "shard-1",
"numOrphanedDocs": 0,
"numOwnedDocuments": 6,
"ownedSizeBytes": 366,
"orphanedSizeBytes": 0
},
{
"shardName": "shard-2",
"numOrphanedDocs": 0,
"numOwnedDocuments": 6,
"ownedSizeBytes": 366,
"orphanedSizeBytes": 0
}
]
}
]

确保集群中每个分片的 "numOrphanedDocs"0

后退

$setWindowFields