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

pymongo method of getting statistics for collection byte usage?

MongoDB应用程序常见问题解答提到短字段名称是一种可用于小型文档的技术。这使我开始思考,"反正是个小文件吗?"

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

我也很想知道每个文档的基本字节开销是多少。


没有内置的方法来获取BSON文档中用于键的空间与用于实际字段值的空间之比。但是,collstats和dbstats命令可以为您提供有关收集和数据库大小的有用信息。这是在pymongo中使用它们的方法:

1
2
3
4
5
6
7
8
9
10
from pymongo import MongoClient

client = MongoClient()
db = client.test

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

# print database statistics
print db.command("dbstats")

您总是可以尝试破解一些东西,以获得一个不错的估计。如果集合中的所有文档都具有相同的架构,则类似这样的东西还算不错:

  • 计算文档的字段名称中的字符总数,然后将此数字称为a。
  • 为每个字段添加一个,以说明终止字符。令结果为b。
  • 将b乘以集合中的文档数,然后将结果表示为c。
  • 将c除以collStats返回的" size "字段(假设collStats缩放为返回字节大小)。将此值设为d。
  • 现在d是用于存储字段名称的集合的总数据大小的比例。