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

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

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

【问题讨论】:

  • 可能类似于len(bson.BSON.encode(document))?

标签: python mongodb pymongo bson


【解决方案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 为单位的?
  • 我认为是以字节为单位的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-17
  • 1970-01-01
  • 1970-01-01
  • 2016-05-11
  • 1970-01-01
  • 1970-01-01
  • 2021-02-18
相关资源
最近更新 更多