MongoDB Application FAQ mentions个短字段名是一种可用于小文档的技术.这让我想到,"小文档到底是什么?"

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

我很好奇每个文档的基本字节开销是多少.

推荐答案

没有内置的方法可以获得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")

不过,你可以随时修改一些东西,以得到一个相当好的估计.如果一个集合中的所有文档都具有相同的模式,那么类似这样的内容也不错:

  1. 将文档字段名中的字符总数加起来,并将这个数字称为a.
  2. for each 字段添加一到a,以说明终止字符.让结果为b.
  3. b乘以集合中的文档数,结果用c表示.
  4. c除以collStats返回的"大小"字段(假设collStats被zoom 为以字节为单位返回大小).让这个值为d.

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

Mongodb相关问答推荐

MongoDB—基于数组中同一文档中的另一个字段更新字段

如何使用MongoDB对子文档进行条件投影?

Mongo 聚合查找 $gte 6 个月前的日期,以DD-MM-YYYY格式存储为字符串

使用mongo'db.Decode(&dto)映射一个嵌套的 struct

mongodb.将文档分组在数组中,对它们进行评分计数和求和并添加新字段

尽管前一阶段输出文档,$group stage 仍返回零文档

如何在查找 foreignField 中使用通配符?

定期自动轮换 MongoDb 集合

根据条件删除一些数组元素并将数组的大小更新为mongo中的另一个文件

找到一个用户,然后使用 MongoDB 根据他们的总分获得他们的排名

使用golang的MongoDB错误无法访问服务器

MongoDB:如何将所有文档合并到聚合管道中的单个文档中

无法让 Mongoose.js 子文档数组填充

声明多个模式后无法从数据库中获取数据(mongoose + express + mongodb

使用 mgo 存储嵌套 struct

MongoDB 1.6.5:如何重命名集合中的字段

如何使用 mongodb 和 php 正确处理分页查询?

使用 Mongoid 和 Ruby 查询最近 30 天的日期范围?

Mongo: query by key one level deep

MongoDB InsertMany 与 BulkWrite