KEMBAR78
Django Mongodb Engine | PDF
So you want to use

DJANGO AND
MONGODB
     @flaper87
DJANGO AND
      MONGODB
  THAT’S COOL, but you need
to know A COUPLE OF THINGS
LIKE: WHAT ARE
THE OPTIONS?
( http://mongoengine.org )

  An object-document mapper
to connect Python and MongoDB
Mongokit
      ( http://namlook.github.com/mongokit/ )

          Another ODM
that takes mongodb into the web
OR, OF COURSE
DJANGO
MONGODB
ENGINE
(A MongoDB backend for Django)
DJANGO-NONREL
A good and up to date Django fork
   that brings non-rel support
Sadly, some of your


django.contrib.*
may be broken, but not the admin
erm...
erm... OKAY
 WHAT’S SO COOL
ABOUT THIS THEN?
WHAT’S SO COOL
ABOUT THIS THEN?
 No changes needed.
ABOUT THIS THEN?
 No changes needed.

 NOBODY’S GONNA TOUCH
 YOUR PRECIOUS BUILTINS.
NOBODY’S GONNA TOUCH
   YOUR PRECIOUS BUILTINS.

REDUCED IMPEDANCE MISSMATCH
That’s cool

WHAT ELSE?
NEW FIELDS
AGGREGATIONS
GRIDFS
CACHING
MAP / REDUCE
>>> for pair in Article.objects.map_reduce(_map, _reduce, 'wordcount'):
...     print pair.key, pair.value
NEW INDEXES
class Club(models.Model):
   location = ListField()
   rating = models.FloatField()
   ...
   class MongoMeta:
       indexes = [
          [('rating', -1)],
          {'fields': [('location', '2d')], 'min': -42, 'max': 42},
       ]
Plus:

TONS OF DOCS
  (which never hurts)
Suggestions
RAW QUERIES
MyModel.objects.raw_query(field=“value”)
EMBEDD IF
       POSSIBLE
class Comment(models.Model):
    created_on = models.DateTimeField()
    author = EmbeddedModelField('Author')
    text = models.TextField()
RE-THINK
  YOUR MODELS
class Post(models.Model):
    title = models.CharField()
    text = models.TextField()
    tags = ListField()

    # Note: Use defer
    comments = ListField(EmbeddedModelField('Comment'))
DO NOT USE IT
      EVERYWHERE
MONGODB_MANAGED_APPS = ['myapp']

MONGODB_MANAGED_MODELS = ['myapp.MongoDBModel']
SERVE STATIC
    FILES
GridFSStorage + nginx-GridFS
AGGREGATIONS?
       MAP/REDUCE
class Min(MongoAggregate):
    initial_value = float('inf')
    reduce_template = '{alias} = ({lookup}<{alias})?{lookup}:{alias}'

class Max(MongoAggregate):
    initial_value = float('-inf')
    reduce_template = '{alias} = ({lookup}>{alias})?{lookup}:{alias}'
DATES WORK
           But, MongoDB
does not support month/day queries
DO NOT TRY
TO MIGRATE
It Wont Work!
CONTRIBUTE
The Compiler’s a mess
Ask away
  http://groups.google.com
/group/django-non-relational


   Contribute:
http://django-mongodb.org
  /meta/contributing.html

Django Mongodb Engine