Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Django
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
flaper87
April 24, 2012
6
720
Django
flaper87
April 24, 2012
Tweet
Share
More Decks by flaper87
See All by flaper87
Inheriting code… and I don’t mean classes
flaper87
0
270
Don't try to look smart, be smart
flaper87
0
190
Keeping up with the pace of a fast growing community without dying
flaper87
0
190
A walk to remember: Debugging a distributed system failure
flaper87
0
220
Managing requirements for a many-thousands contributors software
flaper87
0
110
Fast-forward to today's Zaqar
flaper87
0
160
Breaking Backwards Compatibility: The easy way
flaper87
1
170
A functional view to Rust
flaper87
1
150
Rust - A walk to concurrency
flaper87
3
610
Featured
See All Featured
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
240
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
160
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Being A Developer After 40
akosma
91
590k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
410
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
150
From π to Pie charts
rasagy
0
160
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
150
Navigating Weather and Climate Data
rabernat
0
140
Transcript
So you want to use DJANGO AND MONGODB @flaper87
THAT’S COOL, but you n d to know A COUPLE
OF THINGS DJANGO AND MONGODB
LIKE: WHAT ARE THE OPTIONS?
An object-document mapper to connect Python and MongoDB ( http://mongoengine.org
)
Another ODM that takes mongodb into the web Mongokit (
http://namlook.github.com/mongokit/ )
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
django.contrib.* Sadly, some of your may be broken, but not
the admin
erm... OKAY WHAT’S SO COOL ABOUT THIS THEN?
No anges n ded. WHAT’S SO COOL ABOUT THIS THEN?
No anges n ded. NOBODY’S GONNA TOUCH YOUR PRECIOUS BUILTINS.
ABOUT THIS THEN?
NOBODY’S GONNA TOUCH YOUR 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 INDEXES class Club(models.Model): location = ListField() rating = models.FloatField()
... class MongoMeta: indexes = [ [('rating', -1)], {'fields': [('location', '2d')], 'min': -42, 'max': 42}, ]
TONS OF DOCS Plus: (which never hurts)
Su estions
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
A away Contribute: http://django-mongodb.org /meta/contributing.html http://groups.google.com /group/django-non-relational