pymongo获取收集字节使用情况统计信息的方法?

Tra*_*ggs 10 python mongodb pymongo python-3.x

MongoDB的应用常见问题提到这短短的字段名是可用于小文件的技术.这让我想到,"无论如何,这是一个小文件?"

我正在使用pymongo,有没有什么方法可以编写一些python来扫描集合,并了解字段描述符使用的字节与用于实际字段数据的字节的比率?

我对每个文档的基本字节开销感到非常好奇.

小智 19

没有内置的方法来获得BSON文档中用于密钥的空间与用于实际字段值的空间的比率.但是,collstatsdbstats命令可以为您提供有关集合和数据库大小的有用信息.以下是在pymongo中使用它们的方法:

from pymongo import MongoClient

client = MongoClient()
db = client.test

# print collection statistics
print db.command("collstats", "events")

# print database statistics
print db.command("dbstats")
Run Code Online (Sandbox Code Playgroud)

你总是可以通过破解来获得一个非常好的估计.如果集合中的所有文档都具有相同的模式,那么这样的事情并不是坏事:

  1. 计算文档字段名称中的字符总数,并将此数字称为a.
  2. 添加一个到一个以占终止字符的每个字段.让结果为b.
  3. b乘以集合中的文档数,并将结果表示为c.
  4. c除以collStats返回的"size"字段(假设collStats被缩放为以字节为单位返回大小).设这个值为d.

现在d是用于存储字段名称的集合的总数据大小的比例.