django mongodb engine

Post on 23-Jan-2015

1.929 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

So you want to use

DJANGO ANDMONGODB

@flaper87

THAT’S COOL, but you n!dto know A COUPLE OF THINGS

DJANGO ANDMONGODB

LIKE: WHAT ARETHE OPTIONS?

An object-document mapperto connect Python and MongoDB

( http://mongoengine.org )

Another ODMthat takes mongodb into the web

Mongokit( http://namlook.github.com/mongokit/ )

OR, OF COURSE

DJANGOMONGODBENGINE(A MongoDB backend for Django)

DJANGO-NONRELA good and up to date Django fork

that brings non-rel support

DJANGO-NONRELA good and up to date Django fork

that brings non-rel support

Unfortunately, most of your

may be broken, but not the admin

django.contrib.*Sadly, some of your

may be broken, but not the admin

DJANGO-NONRELA good and up to date Django fork

that brings non-rel support

erm...

No "anges n!ded.

erm... OKAYWHAT’S SO COOL

ABOUT THIS THEN?No "anges n!ded.

No "anges n!ded.

erm... OKAYWHAT’S SO COOL

ABOUT THIS THEN?

No "anges n!ded.

NOBODY’S GONNA TOUCHYOUR PRECIOUS BUILTINS.

WHAT’S SO COOLABOUT THIS THEN?

NOBODY’S GONNA TOUCHYOUR PRECIOUS BUILTINS.

REDUCED IMPEDANCE MISSMATCH

WHAT ELSE?#at’s c$l

NEW FIELDS

AGGREGATIONS

GRIDFS

CACHING

MAP / REDUCE>>> for pair in Article.objects.map_reduce(_map, _reduce, 'wordcount'):... print pair.key, pair.value

NEW INDEXESclass Club(models.Model): location = ListField() rating = models.FloatField() ... class MongoMeta: indexes = [ [('rating', -1)], {'fields': [('location', '2d')], 'min': -42, 'max': 42}, ]

TONS OF DOCSPlus:

(which never hurts)

Su%estions

RAW QUERIESMyModel.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 MIGRATEIt Wont Work!

CONTRIBUTEThe Compiler’s a mess

top related