nanomongo is a minimal MongoDB Object-Document Mapper for Python. It does not attempt to be a feature-complete ODM but if you enjoy using PyMongo API with dictionaries and often find yourself writing validators and pymongo.Collection
wrappers, nanomongo might suit your needs.
Quick Links: Source (github) - Documentation (rtd) - Packages (PyPi) - Changelog
import pymongo
from nanomongo import Field, BaseDocument
client = pymongo.MongoClient()
# python3 notation, see documentation for python2 options
# we can omit the keyword arguments here and later call MyDoc.register(client=client, db='dbname')
class MyDoc(BaseDocument, dot_notation=True, client=client, db='dbname'):
foo = Field(str)
bar = Field(int, required=False)
__indexes__ = [
pymongo.IndexModel('foo'),
pymongo.IndexModel([('bar', 1), ('foo', -1)], unique=True),
]
doc = MyDoc(foo='L33t') # creates document {'foo': 'L33t'}
doc.insert() # inserts document {'_id': ObjectId('...'), 'foo': 'L33t'}
doc.bar = 42 # records the change
doc.save() # calls collection.update_one {'$set': {'bar': 42}}
MyDoc.find_one({'foo': 'L33t'})
{'_id': ObjectId('...'), 'bar': 42, 'foo': 'L33t'}
- Author
- License