2016-07-20 2 views
2

Монгольская оболочка имеет the bsonsize() method, чтобы получить размер BSON для данного документа, извлеченного из БД.Размер объекта BSON для документа, полученного из базы данных

Есть ли способ получить то же самое с помощью драйвера PyMongo? Я нашел bson module в документации, но мне не совсем понятно, как использовать его для получения размера документа, извлеченного из БД.

+2

Возможно, что-то вроде 'len (bson.BSON.encode (document))'? – styvane

ответ

3

основе @SSDMS предложение (спасибо!) Следующее может быть использовано:

len(bson.BSON.encode(document)) 

Я проверил с несколькими документами в моей БД, сравнивая результат в Монго оболочки и с описанным выше способом Python и получить тот же результат:

в Монго оболочки:

> 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