jaraco.modb is a small, pure-Python library for persisting Python
objects to MongoDB.
jaraco.modb facilitates using jsonpickle to produce MongoDB-friendly
representations of pickleable Python objects for easy storage in a MongoDB
database.
One may simply encode and decode Python objects to MongoDB BSON-friendly representations:
class MyObject(object):
def __init__(self, val):
self.val = val
import jaraco.modb
import pymongo
mongo_collection = pymongo.MongoClient().mydb.mycollection
val = MyObject(3)
# save the object to the DB
id = mongo_collection.save(jaraco.modb.encode(val))
# retrieve the object from the DB
new_val = jaraco.modb.decode(mongo_collection.find_one(id))
assert isinstance(new_val, MyObject)
assert new_val.val == 3
A more detailed tutorial is now published as a Jupyter Notebook.
jaraco.modb also provides an SON Manipulator suitable for automatically
encoding arbitrary objects for a pymongo.Database:
jaraco.modb.SONManipulator.install(mongo_collection.database)
mongo_collection.save({'val': val})
Unfortunately, due to a limitation with the API of the SONManipulator, it's not possible to save a custom object as the document itself (the document must always be a dict).