在MongoDB中检查集合大小的5种方法
在本文中,我介绍了 5 种方法,在使用 mongo shell 时,您可以使用这些方法来检查 MongoDB 集合的大小。
方法dataSize()
检查MongoDB集合大小的最快和最简单的方法可能是使用该方法。此方法返回集合的大小(以字节为单位)。db.collection.dataSize()
若要调用此方法,只需替换为要检查的集合的名称。collection
例:
db.posts.dataSize()
结果:
3012
此示例检查名为 的集合的大小。它只是一个包含少量小文档的小集合,因此大小仅为 3012 字节。posts
方法totalSize()
该方法返回集合中数据的总大小(以字节为单位)加上集合上每个索引的大小。db.collection.totalSize()
因此,如果您想知道包含所有索引的总大小,请使用此方法。
例:
db.posts.totalSize()
结果:
114688
这与我们在上一个示例上运行的集合相同。该集合有三个索引(包括字段上的索引),我们可以看到总大小明显高于没有索引的集合大小。posts``_id
方法stats()
如果您需要的不仅仅是集合大小,您可以尝试该方法。db.collection.stats()
此方法返回有关集合的统计信息(包括其大小)。
例:
db.posts.stats()
结果(部分):
{
"ns" : "krankykranes.posts",
"size" : 3012,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36864,
"freeStorageSize" : 16384,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
此方法返回大量数据,因此我在这里只返回第一小部分。集合大小列在结果顶部附近的字段中。size
默认情况下,此方法以字节为单位返回大小数据。如果您愿意,可以更改它,使其以千字节为单位报告。为此,请使用值为 .scale``1024
例:
db.posts.stats( { scale: 1024 } )
结果(部分):
{
"ns" : "krankykranes.posts",
"size" : 2,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36,
"freeStorageSize" : 16,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
该方法提供了命令的包装器(如下所示)。db.collection.stats()``collStats
命令collStats
如前所述,该方法是诊断命令的包装器。此命令返回有关集合的统计信息(包括其大小)。db.collection.stats()``collStats
例:
db.runCommand( { collStats : "posts", scale: 1 } )
结果(部分):
{
"ns" : "krankykranes.posts",
"size" : 3012,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36864,
"freeStorageSize" : 16384,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
与该方法一样,此命令返回大量数据,因此我刚刚从顶部抓取了一些内容。stats()
请注意,我在此示例中提供了一个 of 以返回大小数据(以字节为单位)。我们可以将其更改为以千字节为单位返回它。scale``1``1024
例:
db.runCommand( { collStats : "posts", scale: 1024 } )
结果(部分):
{
"ns" : "krankykranes.posts",
"size" : 2,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36,
"freeStorageSize" : 16,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
运营商$bsonSize
MongoDB 4.4中引入了聚合管道运算符,目的是返回BSON文档的大小。$bsonSize
可以使用 通过将集合中所有文档与 and 运算符组合来返回集合中所有文档的总大小。$bsonSize``$group``$sum
例:
db.posts.aggregate([
{
$group: {
"_id": null,
"rootSize": { $sum: { $bsonSize: "$$ROOT" } }
}
}
])
输出:
{ "_id" : null, "rootSize" : 3012 }