| Info: | MongoEngine is an ORM-like layer on top of PyMongo. | 
|---|---|
| Repository: | https://github.com/MongoEngine/mongoengine | 
| Author: | Harry Marr (https://github.com/hmarr) | 
| Maintainer: | Ross Lawley (https://github.com/rozza) | 
MongoEngine is a Python Object-Document Mapper for working with MongoDB. Documentation available at http://mongoengine-odm.rtfd.org - there is currently a tutorial, a user guide and an API reference.
If you have setuptools
you can use easy_install -U mongoengine. Otherwise, you can download the
source from GitHub and run python
setup.py install.
- pymongo>=2.7.1
 - sphinx (optional - for documentation generation)
 
- Django Integration: Django>=1.4.0 for Python 2.x or PyPy and Django>=1.5.0 for Python 3.x
 - Image Fields: Pillow>=2.0.0 or PIL (not recommended since MongoEngine is tested with Pillow)
 - dateutil>=2.1.0
 
Some simple examples of what MongoEngine code looks like:
class BlogPost(Document):
    title = StringField(required=True, max_length=200)
    posted = DateTimeField(default=datetime.datetime.now)
    tags = ListField(StringField(max_length=50))
class TextPost(BlogPost):
    content = StringField(required=True)
class LinkPost(BlogPost):
    url = StringField(required=True)
# Create a text-based post
>>> post1 = TextPost(title='Using MongoEngine', content='See the tutorial')
>>> post1.tags = ['mongodb', 'mongoengine']
>>> post1.save()
# Create a link-based post
>>> post2 = LinkPost(title='MongoEngine Docs', url='hmarr.com/mongoengine')
>>> post2.tags = ['mongoengine', 'documentation']
>>> post2.save()
# Iterate over all posts using the BlogPost superclass
>>> for post in BlogPost.objects:
...     print '===', post.title, '==='
...     if isinstance(post, TextPost):
...         print post.content
...     elif isinstance(post, LinkPost):
...         print 'Link:', post.url
...     print
...
>>> len(BlogPost.objects)
2
>>> len(HtmlPost.objects)
1
>>> len(LinkPost.objects)
1
# Find tagged posts
>>> len(BlogPost.objects(tags='mongoengine'))
2
>>> len(BlogPost.objects(tags='mongodb'))
1
To run the test suite, ensure you are running a local instance of MongoDB on
the standard port, and run: python setup.py test.
We welcome contributions! see the Contribution guidelines