从数据库中检索到的文档的 BSON 对象大小

Posted

技术标签:

【中文标题】从数据库中检索到的文档的 BSON 对象大小【英文标题】:BSON object size of document retrieved from DB 【发布时间】:2016-11-23 09:38:51 【问题描述】:

Mongo shell 有 the bsonsize() method 来获取从 DB 中检索到的给定文档的 BSON 大小。

有没有办法使用 PyMongo 驱动程序获得相同的结果?我在文档中找到了bson module,但我并不完全清楚如何使用它来获取从数据库中检索到的文档的大小。

【问题讨论】:

可能类似于len(bson.BSON.encode(document))? 【参考方案1】:

根据@SSDMS 的建议(谢谢!),可以使用以下内容:

len(bson.BSON.encode(document))

我在我的数据库中测试了几个文档,比较了 mongo shell 的结果和上面的 Python 方法,得到了相同的结果:

在 mongo shell:

> var doc1 = db.entities.findOne('_id.id': '001')
> var doc2 = db.entities.findOne('_id.id': '002')
> Object.bsonsize(doc1)
816
> Object.bsonsize(doc2)
819

在 Python 控制台:

>>> import bson
>>> from pymongo import MongoClient
>>> db = MongoClient('localhost', 27017)
>>> doc1 = db['orion']['entities'].find_one('_id.id': '001')
>>> doc2 = db['orion']['entities'].find_one('_id.id': '002')
>>> len(bson.BSON.encode(doc1))
816
>>> len(bson.BSON.encode(doc2))
819

【讨论】:

mongo 对一个文档有 16 MB 的限制,我可以知道这个 python 中的返回数字是以 MB 还是 B 为单位的? 我认为是以字节为单位的

以上是关于从数据库中检索到的文档的 BSON 对象大小的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS 中 BSON 对象的 console.log

NodeJS 中 BSON 对象的 console.log

如何在 Java Android App 中使用从 Webserver 检索到的 JSON 来动态创建和使用对象

如何将检索到的数据从 v-for 绑定到 Vuejs 中的数据对象?

返回通过 objectAtIndex 从 NSMutableArray 检索到的对象 - 需要自动释放吗?

使用 Cloudant 从 JSON 数组中检索 JSON 对象