使用 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)