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开始,仅当主分片包含数据段或 孤立文档 时, 才会返回集合 主 分片的输出。

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

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