Having reviewed several available options – I decided it would be fun to try MongoEngine with my new Django site.
I will be walking through this tutorial to start with – http://docs.mongoengine.org/en/latest/tutorial.html. I will start where I left off with the skeleton site.
Getting Started
The suggested installing it with “$ pip install mongoengine”
(lazybower)rcstats@ubuntu:~/Desktop/lazybower/LazyBower$ pip install mongoengine
Downloading/unpacking mongoengine
Downloading mongoengine-0.8.4.tar.gz (124kB): 124kB downloaded
Running setup.py egg_info for package mongoengine
0.8.4
no previously-included directories found matching 'docs/_build'
Requirement already satisfied (use --upgrade to upgrade): pymongo>=2.5 in /home/rcstats/Desktop/lazybower/lib/python2.7/site-packages (from mongoengine)
Installing collected packages: mongoengine
Running setup.py install for mongoengine
0.8.4
no previously-included directories found matching 'docs/_build'
Successfully installed mongoengine
Cleaning up...
I then went ahead and added it to the dev requirements (requirements/dev.txt).
Werkzeug==0.8.3
flake8==2.0
ipython==0.13.2
+mongoengine==0.8.4
python manage.py shell_plus
In [1]: from mongoengine import *
In [2]: connect('tumblelog')
Out[2]: MongoClient('localhost', 27017)
Complete the Tutorial
I ran through without incident just pumping the commands suggested in the tutorial into the django ipython shell.
(lazybower)rcstats@ubuntu:~/Desktop/lazybower/LazyBower$ python manage.py shell_plus


from mongoengine import *
connect('tumblelog')
class User(Document):
email = StringField(required=True)
first_name = StringField(max_length=50)
last_name = StringField(max_length=50)
class Comment(EmbeddedDocument):
content = StringField()
name = StringField(max_length=120)
class Post(Document):
title = StringField(max_length=120, required=True)
author = ReferenceField(User, reverse_delete_rule=CASCADE)
tags = ListField(StringField(max_length=30))
comments = ListField(EmbeddedDocumentField(Comment))
meta = {'allow_inheritance': True}
class TextPost(Post):
content = StringField()
class ImagePost(Post):
image_path = StringField()
class LinkPost(Post):
link_url = StringField()
Mongo Cheat Sheet
http://docs.mongodb.org/manual/tutorial/getting-started-with-the-mongo-shell/
So you can double check your work, here is the cheat sheet I use:

Results
That gives an overview of my experience getting started with MongoEngine. I was fairly pleased and will move on to integrating it with a Django app in the following post.