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