使用 python-bsonjs
python-bsonjs 不依赖于 PyMongo,并且可以提供比 json_util
更好的性能提升:
bsonjs 大致 10-15x 比 PyMongo 的在解码 BSON 到 JSON 和编码 JSON 来 BSON json_util 更快。
注意:
- 为了有效地使用 bsonjs,建议直接使用
RawBSONDocument
- 日期使用 LEGACY 表示法编码,即
{"$date": <dateAsMilliseconds>}
。目前没有可以改变的选项。
安装
pip install python-bsonjs
用法
要充分利用 bsonjs,请将数据库配置为使用 RawBSONDocument
类。然后,使用 dumps
将 bson 原始字节转换为 json 和 loads
,将 json 转换为 bson 原始字节:
import pymongo
import bsonjs
from pymongo import MongoClient
from bson.raw_bson import RawBSONDocument
# configure mongo to use the RawBSONDocument representation
db = pymongo.MongoClient(document_class=RawBSONDocument).samples
# convert json to a bson record
json_record = '{"_id": "some id", "title": "Awesome Movie"}'
raw_bson = bsonjs.loads(json_record)
bson_record = RawBSONDocument(raw_bson)
# insert the record
result = db.movies.insert_one(bson_record)
print(result.acknowledged)
# find some record
bson_record2 = db.movies.find_one()
# convert the record to json
json_record2 = bsonjs.dumps(bson_record2.raw)
print(json_record2)