PyMongo Utiliser python-bsonjs


Exemple

python-bsonjs ne dépend pas de PyMongo et peut offrir une amélioration des performances par rapport à json_util :

bsonjs est environ 10 à 15 fois plus rapide que json_util de PyMongo pour décoder BSON en JSON et encoder JSON en BSON.

Notez que:

  • pour utiliser efficacement bsonjs, il est recommandé de travailler directement avec RawBSONDocument
  • les dates sont codées en utilisant la représentation LEGACY, c'est-à-dire {"$date": <dateAsMilliseconds>} . Il n'y a actuellement aucune option pour changer cela.

Installation

pip install python-bsonjs

Usage

Pour tirer pleinement parti des bsonjs, configurez la base de données pour utiliser la classe RawBSONDocument . Ensuite, utilisez dumps pour convertir des octets bruts bson en json et des loads pour convertir json en octets bruts 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)