Python e MongoDB
  Christiano Anderson
    Twitter: @dump
    Blog: http://christiano.me
    Email: anderson@gonow.com.br
    Site: http://www.gonow.com.br
• Trabalha com software livre desde 1995;
• Gerente de Projetos da Gonow;
• Desenvolvedor do Projeto GNU (FSF);
• Trabalha com Python desde 2000;
• Membro da equipe de tradução do
  MongoDB;

• Evangelista NoSQL;
O que é MongoDB?
O que é MongoDB?
Banco de dados não relacional
O que é MongoDB?
Banco de dados não relacional
                                Software Livre
O que é MongoDB?
Banco de dados não relacional
                                Software Livre
 Alta performance
O que é MongoDB?
Banco de dados não relacional
                                Software Livre
 Alta performance


       Schema free
O que é MongoDB?
Banco de dados não relacional
                                Software Livre
 Alta performance
                      Orientado a documentos

       Schema free
“MongoDB preenche a lacuna entre modelagem chave/
    valor (o que são bem rápidas e escaláveis) e os
tradicionais banco de dados relacionais (que oferecem
                várias funcionalidades)”
Quem utiliza MongoDB




                       E muitos outros...
Bom para...
Bom para...
Web 2.0
Bom para...
Web 2.0
          Migrations
Bom para...
Web 2.0
          Migrations

                       Flexibilidade
Bom para...
Web 2.0
          Migrations

                       Flexibilidade

                                   Caching
Não muito bom se você precisa de...
Não muito bom se você precisa de...

   Transações
Não muito bom se você precisa de...

   Transações

       Suporte completo a SQL
Por que Python?
Por que Python?
 Afinidade com a linguagem...
Por que Python?
  Afinidade com a linguagem...

Facilidade em trabalhar com o modelo do MongoDB...
Por que Python?
  Afinidade com a linguagem...

Facilidade em trabalhar com o modelo do MongoDB...


 Vários módulos e ORMs prontos...
Modelo de documento
Modelo de documento
    {‘nome’: ‘Christiano’,
    ‘linguagem’: ‘Python’,
    ‘nota’: 10}
Modelo de documento
          {‘nome’: ‘Christiano’,
          ‘linguagem’: ‘Python’,
          ‘nota’: 10}
                    Sim, é um JSON.
É muito fácil trabalhar com esse modelo de dados em
          praticamente qualquer linguagem
Migrations?
Migrations?
Você pode mudar dinamicamente seu documento...
Migrations?
Você pode mudar dinamicamente seu documento...

{‘nome’: ‘Christiano’,
‘linguagem’: ‘Python’,
‘nota’: 10}
Migrations?
Você pode mudar dinamicamente seu documento...

{‘nome’: ‘Christiano’,
‘linguagem’: ‘Python’,
‘nota’: 10}
Migrations?
Você pode mudar dinamicamente seu documento...

                             {‘nome’: ‘Christiano’,
{‘nome’: ‘Christiano’,
                             ‘linguagem’: ‘Python’,
‘linguagem’: ‘Python’,
                             ‘nota’: 10,
‘nota’: 10}
                             ‘local’: ‘Gonow’}
Migrations?
Você pode mudar dinamicamente seu documento...

                             {‘nome’: ‘Christiano’,
{‘nome’: ‘Christiano’,
                             ‘linguagem’: ‘Python’,
‘linguagem’: ‘Python’,
                             ‘nota’: 10,
‘nota’: 10}
                             ‘local’: ‘Gonow’}
Migrations?
Você pode mudar dinamicamente seu documento...

                             {‘nome’: ‘Christiano’,
{‘nome’: ‘Christiano’,
                             ‘linguagem’: ‘Python’,
‘linguagem’: ‘Python’,
                             ‘nota’: 10,
‘nota’: 10}
                             ‘local’: ‘Gonow’}

    Você não precisa modificar o modelo de
     dados para adicionar novos elementos.
       Basta inserir e salvar novamente!
Agregadores...

        db.programmers.insert({“linguagem”:”python”})
        db.programmers.insert({“linguagem”:”perl”})
        db.programmers.insert({“linguagem”:”ruby”})
        db.programmers.insert({“linguagem”:”python”})
Agregadores...

        db.programmers.insert({“linguagem”:”python”})
        db.programmers.insert({“linguagem”:”perl”})
        db.programmers.insert({“linguagem”:”ruby”})
        db.programmers.insert({“linguagem”:”python”})
Agregadores...

        db.programmers.insert({“linguagem”:”python”})
        db.programmers.insert({“linguagem”:”perl”})
        db.programmers.insert({“linguagem”:”ruby”})
        db.programmers.insert({“linguagem”:”python”})
Agregadores...

             db.programmers.insert({“linguagem”:”python”})
Duplicados




             db.programmers.insert({“linguagem”:”perl”})
             db.programmers.insert({“linguagem”:”ruby”})
             db.programmers.insert({“linguagem”:”python”})
Agregadores...

             db.programmers.insert({“linguagem”:”python”})
Duplicados




             db.programmers.insert({“linguagem”:”perl”})
             db.programmers.insert({“linguagem”:”ruby”})
             db.programmers.insert({“linguagem”:”python”})



             db.programmers.distinct(“language”)
Map/Reduce
   É utilizado para criar funções especiais, pode ser
           comparado a uma stored procedure
Map/Reduce
   É utilizado para criar funções especiais, pode ser
           comparado a uma stored procedure


     Utiliza-se JavaScript para criar essas funções
Map/Reduce
   É utilizado para criar funções especiais, pode ser
           comparado a uma stored procedure


     Utiliza-se JavaScript para criar essas funções



                   Bastante flexível
Exemplo de Map/Reduce para contar tags repetidas

        function() {
            this.tags.forEach(function(z)) {
               emit(z, 1);
        });}

        function(key, value) {
           var total = 0;
           for(var i = 0; i < values.length; i++) {
              total += values[i]; }
           return total;
        }
Comparando SQL e MongoDB 1/2


                  SQL                              MongoDB
    INSERT INTO USERS VALUES(1,1)               db.users.insert({a:1, b:1})


         SELECT a,b FROM users                 db.users.find({}, {a: 1, b: 1})


          SELECT * FROM users                        db.users.find()


      SELECT * FROM users WHERE age=33           db.users.find({age: 33})


   SELECT * FROm users WHERE name = “pedro”   db.users.find({name:”pedro”})
Comparando SQL e MongoDB 2/2


                  SQL                                MongoDB
     SELECT * FROM users WHERE               db.users.find({‘age’:33}).sort({name:
        age=33 ORDER BY name                                 1})
   SELECT * FROM users WHERE age
                                               db.users.find({‘age’:{$lt:33}})})
               < 33
   CREATE INDEX myindexname ON
                                               db.users.ensureIndex({name:1})
            user(name)
   SELECT * FROM users WHERE a = 1 AND b =
                      ‘q’                         db.users.find({a:1, b:’q’})


     SELECT * FROM users LIMIT 10 SKIP 20     db.users.find().limit(10).skip(20)
Outros recursos bacanas
 Suporte a índices;
Outros recursos bacanas
 Suporte a índices;
           GridFS;
Outros recursos bacanas
 Suporte a índices;
           GridFS;
                Replicação de dados;
Outros recursos bacanas
 Suporte a índices;
           GridFS;
                Replicação de dados;
                          Alta disponibilidade;
Outros recursos bacanas
 Suporte a índices;
           GridFS;
                Replicação de dados;
                          Alta disponibilidade;

     É software livre, mas também oferece suporte
                        comercial!
Como trabalhar com MongoDB e Python
Como trabalhar com MongoDB e Python
   PyMongo é o módulo para Python e MongoDB;
Como trabalhar com MongoDB e Python
   PyMongo é o módulo para Python e MongoDB;



            $ easy_install pymongo
Exemplo de uso
Exemplo de uso



>>> from pymongo import Connection
>>> con = Connection(‘localhost’)
>>> db = con[‘blog’]
Inserindo um registro

>>> post = {‘title’:‘Meu Primeiro Post’,
... ‘author’:‘Christiano Anderson’,
... ‘content’: ‘Esse eh um exemplo de conteudo’,
... ‘tags’: [‘mongodb’,‘paraiba’,‘evento’,‘ensol’]}

>>> post = db[‘posts’]
>>> post.insert(post)
ObjectId(‘4cb662f508bf532b1b000000’)
Inserindo mais de um documento de uma só vez...
>>> other_posts = [{‘title’:‘Segundo
post’,‘author’:‘Christiano Anderson’,‘tags’:
[‘teste’],‘content’:‘Esse eh meu segundo post’},

ObjectId(‘4cb6651b08bf532b970000000’)]

{‘title’:‘Terceiro post’,‘author’:‘Luke Skywalker’,‘tags’:
[‘naboo’,‘tatooine’],‘content’:‘Olah Princesa Leya’}

ObjectId(‘4cb6651b08bf532b970000001’)]
Pesquisando na base de dados com Python


      >>> all_posts = db.post.find({})
      >>> for p in all_posts:
      ... print p[‘title’]
      Meu primeiro post
      Meu segundo post
      Olah Princesa Leya!
Outras consultas


    >>> p = db.posts.find_one({‘tags’:‘naboo’})

    >>> p = db.users.find({‘age’:{‘$gte’:18}})
Outras consultas


    >>> p = db.posts.find_one({‘tags’:‘naboo’})

    >>> p = db.users.find({‘age’:{‘$gte’:18}})
Outras consultas


    >>> p = db.posts.find_one({‘tags’:‘naboo’})

    >>> p = db.users.find({‘age’:{‘$gte’:18}})


       É possível usar operadores como $lt,
       $lte, $gt, $gte e outros
MongoEngine


     - ORM para MongoDB
     - Sintaxe bem similhar ao ORM do Django
     - Baixa curva de aprendizado
     - Bastante estável e eficiente
MongoEngine


     - ORM para MongoDB
     - Sintaxe bem similhar ao ORM do Django
     - Baixa curva de aprendizado
     - Bastante estável e eficiente

              $ easy_install mongoengine
MongoEngine


     - ORM para MongoDB
     - Sintaxe bem similhar ao ORM do Django
     - Baixa curva de aprendizado
     - Bastante estável e eficiente

              $ easy_install mongoengine
MongoEngine


     - ORM para MongoDB
     - Sintaxe bem similhar ao ORM do Django
     - Baixa curva de aprendizado
     - Bastante estável e eficiente

              $ easy_install mongoengine


          http://www.mongoengine.org
Exemplo MongoEngine
   from mongoengine import *

   class Usuario(Document):
       nome = StringField(required=True)
       email = StringField()
Exemplo MongoEngine
   from mongoengine import *

   class Usuario(Document):
       nome = StringField(required=True)
       email = StringField()



   u = Usuario()
   u.nome = “Christiano”
   u.email = “anderson@gonow.com.br”
   u.save()
Exemplo MongoEngine
   from mongoengine import *

   class Usuario(Document):
       nome = StringField(required=True)
       email = StringField()



   u = Usuario()
   u.nome = “Christiano”
   u.email = “anderson@gonow.com.br”
   u.save()
Exemplo MongoEngine
   from mongoengine import *

   class Usuario(Document):
       nome = StringField(required=True)
       email = StringField()



   u = Usuario()
   u.nome = “Christiano”
   u.email = “anderson@gonow.com.br”
   u.save()        Salvou no banco
Consulta MongoEngine




               for u in User.objects:
                   print u.nome, u.email
MongoDB e Django




          É possível, mas ainda não tem uma
                     solução oficial
MongoDB e Django

    Pontos mais críticos na integração com Django:
    - Autenticação;
    - Sessões;
    - Admin;
    - Outras questões amarradas ao ORM...
Django-MongoDB

                Pacote depende do
           django-nonrel e djangotoolbox


                 Mais informações:

            http://django-mongodb.org/
Django-MongoDB - Como instalar


                      Django-nonrel
       hg clone http://bitbucket.org/wkornewald/django-nonrel
       cd django-nonrel && python setup.py install



                        Djangotoolbox
       hg clone http://bitbucket.org/wkornewald/djangotoolbox
       cd djangotoolbox && python setup.py install




                 Django-mongodb-engine
       git clone https://github.com/django-mongodb-engine/mongodb-engine
       cd mongodb-engine && python setup.py install
Django-MongoDB - recursos interessantes


        É possível utilizar GridFS, MapReduce,
            cache, agregadores e demais
            funcionalidadesdo MongoDB


       Mais informações:
       http://django-mongodb.org/topics/index.html
settings.py


 DATABASES = {
    'default' : {
       'ENGINE' : 'django_mongodb_engine',
       'NAME' : 'my_database'
    }
 }


              Agora é só desenvolver sua
                  app no Django :-)
Como colaborar?



 Lista: http://groups.google.com/group/mongodb-user

 #MongoDB no irc.freenode.org
Experimente o MongoDB



         Você pode experimentar o MongoDB
              sem precisar instalar nada!

               http://try.mongodb.org/
Obrigado! :-)


                Christiano Anderson

                anderson@gonow.com.br

                Twitter: @dump

                Blog: http://christiano.me

Python e MongoDB - Ensol

  • 1.
    Python e MongoDB Christiano Anderson Twitter: @dump Blog: http://christiano.me Email: anderson@gonow.com.br Site: http://www.gonow.com.br
  • 2.
    • Trabalha comsoftware livre desde 1995; • Gerente de Projetos da Gonow; • Desenvolvedor do Projeto GNU (FSF); • Trabalha com Python desde 2000; • Membro da equipe de tradução do MongoDB; • Evangelista NoSQL;
  • 3.
    O que éMongoDB?
  • 4.
    O que éMongoDB? Banco de dados não relacional
  • 5.
    O que éMongoDB? Banco de dados não relacional Software Livre
  • 6.
    O que éMongoDB? Banco de dados não relacional Software Livre Alta performance
  • 7.
    O que éMongoDB? Banco de dados não relacional Software Livre Alta performance Schema free
  • 8.
    O que éMongoDB? Banco de dados não relacional Software Livre Alta performance Orientado a documentos Schema free
  • 9.
    “MongoDB preenche alacuna entre modelagem chave/ valor (o que são bem rápidas e escaláveis) e os tradicionais banco de dados relacionais (que oferecem várias funcionalidades)”
  • 10.
    Quem utiliza MongoDB E muitos outros...
  • 11.
  • 12.
  • 13.
  • 14.
    Bom para... Web 2.0 Migrations Flexibilidade
  • 15.
    Bom para... Web 2.0 Migrations Flexibilidade Caching
  • 16.
    Não muito bomse você precisa de...
  • 17.
    Não muito bomse você precisa de... Transações
  • 18.
    Não muito bomse você precisa de... Transações Suporte completo a SQL
  • 19.
  • 20.
    Por que Python? Afinidade com a linguagem...
  • 21.
    Por que Python? Afinidade com a linguagem... Facilidade em trabalhar com o modelo do MongoDB...
  • 22.
    Por que Python? Afinidade com a linguagem... Facilidade em trabalhar com o modelo do MongoDB... Vários módulos e ORMs prontos...
  • 23.
  • 24.
    Modelo de documento {‘nome’: ‘Christiano’, ‘linguagem’: ‘Python’, ‘nota’: 10}
  • 25.
    Modelo de documento {‘nome’: ‘Christiano’, ‘linguagem’: ‘Python’, ‘nota’: 10} Sim, é um JSON. É muito fácil trabalhar com esse modelo de dados em praticamente qualquer linguagem
  • 26.
  • 27.
    Migrations? Você pode mudardinamicamente seu documento...
  • 28.
    Migrations? Você pode mudardinamicamente seu documento... {‘nome’: ‘Christiano’, ‘linguagem’: ‘Python’, ‘nota’: 10}
  • 29.
    Migrations? Você pode mudardinamicamente seu documento... {‘nome’: ‘Christiano’, ‘linguagem’: ‘Python’, ‘nota’: 10}
  • 30.
    Migrations? Você pode mudardinamicamente seu documento... {‘nome’: ‘Christiano’, {‘nome’: ‘Christiano’, ‘linguagem’: ‘Python’, ‘linguagem’: ‘Python’, ‘nota’: 10, ‘nota’: 10} ‘local’: ‘Gonow’}
  • 31.
    Migrations? Você pode mudardinamicamente seu documento... {‘nome’: ‘Christiano’, {‘nome’: ‘Christiano’, ‘linguagem’: ‘Python’, ‘linguagem’: ‘Python’, ‘nota’: 10, ‘nota’: 10} ‘local’: ‘Gonow’}
  • 32.
    Migrations? Você pode mudardinamicamente seu documento... {‘nome’: ‘Christiano’, {‘nome’: ‘Christiano’, ‘linguagem’: ‘Python’, ‘linguagem’: ‘Python’, ‘nota’: 10, ‘nota’: 10} ‘local’: ‘Gonow’} Você não precisa modificar o modelo de dados para adicionar novos elementos. Basta inserir e salvar novamente!
  • 33.
    Agregadores... db.programmers.insert({“linguagem”:”python”}) db.programmers.insert({“linguagem”:”perl”}) db.programmers.insert({“linguagem”:”ruby”}) db.programmers.insert({“linguagem”:”python”})
  • 34.
    Agregadores... db.programmers.insert({“linguagem”:”python”}) db.programmers.insert({“linguagem”:”perl”}) db.programmers.insert({“linguagem”:”ruby”}) db.programmers.insert({“linguagem”:”python”})
  • 35.
    Agregadores... db.programmers.insert({“linguagem”:”python”}) db.programmers.insert({“linguagem”:”perl”}) db.programmers.insert({“linguagem”:”ruby”}) db.programmers.insert({“linguagem”:”python”})
  • 36.
    Agregadores... db.programmers.insert({“linguagem”:”python”}) Duplicados db.programmers.insert({“linguagem”:”perl”}) db.programmers.insert({“linguagem”:”ruby”}) db.programmers.insert({“linguagem”:”python”})
  • 37.
    Agregadores... db.programmers.insert({“linguagem”:”python”}) Duplicados db.programmers.insert({“linguagem”:”perl”}) db.programmers.insert({“linguagem”:”ruby”}) db.programmers.insert({“linguagem”:”python”}) db.programmers.distinct(“language”)
  • 38.
    Map/Reduce É utilizado para criar funções especiais, pode ser comparado a uma stored procedure
  • 39.
    Map/Reduce É utilizado para criar funções especiais, pode ser comparado a uma stored procedure Utiliza-se JavaScript para criar essas funções
  • 40.
    Map/Reduce É utilizado para criar funções especiais, pode ser comparado a uma stored procedure Utiliza-se JavaScript para criar essas funções Bastante flexível
  • 41.
    Exemplo de Map/Reducepara contar tags repetidas function() { this.tags.forEach(function(z)) { emit(z, 1); });} function(key, value) { var total = 0; for(var i = 0; i < values.length; i++) { total += values[i]; } return total; }
  • 42.
    Comparando SQL eMongoDB 1/2 SQL MongoDB INSERT INTO USERS VALUES(1,1) db.users.insert({a:1, b:1}) SELECT a,b FROM users db.users.find({}, {a: 1, b: 1}) SELECT * FROM users db.users.find() SELECT * FROM users WHERE age=33 db.users.find({age: 33}) SELECT * FROm users WHERE name = “pedro” db.users.find({name:”pedro”})
  • 43.
    Comparando SQL eMongoDB 2/2 SQL MongoDB SELECT * FROM users WHERE db.users.find({‘age’:33}).sort({name: age=33 ORDER BY name 1}) SELECT * FROM users WHERE age db.users.find({‘age’:{$lt:33}})}) < 33 CREATE INDEX myindexname ON db.users.ensureIndex({name:1}) user(name) SELECT * FROM users WHERE a = 1 AND b = ‘q’ db.users.find({a:1, b:’q’}) SELECT * FROM users LIMIT 10 SKIP 20 db.users.find().limit(10).skip(20)
  • 44.
    Outros recursos bacanas Suporte a índices;
  • 45.
    Outros recursos bacanas Suporte a índices; GridFS;
  • 46.
    Outros recursos bacanas Suporte a índices; GridFS; Replicação de dados;
  • 47.
    Outros recursos bacanas Suporte a índices; GridFS; Replicação de dados; Alta disponibilidade;
  • 48.
    Outros recursos bacanas Suporte a índices; GridFS; Replicação de dados; Alta disponibilidade; É software livre, mas também oferece suporte comercial!
  • 49.
    Como trabalhar comMongoDB e Python
  • 50.
    Como trabalhar comMongoDB e Python PyMongo é o módulo para Python e MongoDB;
  • 51.
    Como trabalhar comMongoDB e Python PyMongo é o módulo para Python e MongoDB; $ easy_install pymongo
  • 52.
  • 53.
    Exemplo de uso >>>from pymongo import Connection >>> con = Connection(‘localhost’) >>> db = con[‘blog’]
  • 54.
    Inserindo um registro >>>post = {‘title’:‘Meu Primeiro Post’, ... ‘author’:‘Christiano Anderson’, ... ‘content’: ‘Esse eh um exemplo de conteudo’, ... ‘tags’: [‘mongodb’,‘paraiba’,‘evento’,‘ensol’]} >>> post = db[‘posts’] >>> post.insert(post) ObjectId(‘4cb662f508bf532b1b000000’)
  • 55.
    Inserindo mais deum documento de uma só vez... >>> other_posts = [{‘title’:‘Segundo post’,‘author’:‘Christiano Anderson’,‘tags’: [‘teste’],‘content’:‘Esse eh meu segundo post’}, ObjectId(‘4cb6651b08bf532b970000000’)] {‘title’:‘Terceiro post’,‘author’:‘Luke Skywalker’,‘tags’: [‘naboo’,‘tatooine’],‘content’:‘Olah Princesa Leya’} ObjectId(‘4cb6651b08bf532b970000001’)]
  • 56.
    Pesquisando na basede dados com Python >>> all_posts = db.post.find({}) >>> for p in all_posts: ... print p[‘title’] Meu primeiro post Meu segundo post Olah Princesa Leya!
  • 57.
    Outras consultas >>> p = db.posts.find_one({‘tags’:‘naboo’}) >>> p = db.users.find({‘age’:{‘$gte’:18}})
  • 58.
    Outras consultas >>> p = db.posts.find_one({‘tags’:‘naboo’}) >>> p = db.users.find({‘age’:{‘$gte’:18}})
  • 59.
    Outras consultas >>> p = db.posts.find_one({‘tags’:‘naboo’}) >>> p = db.users.find({‘age’:{‘$gte’:18}}) É possível usar operadores como $lt, $lte, $gt, $gte e outros
  • 60.
    MongoEngine - ORM para MongoDB - Sintaxe bem similhar ao ORM do Django - Baixa curva de aprendizado - Bastante estável e eficiente
  • 61.
    MongoEngine - ORM para MongoDB - Sintaxe bem similhar ao ORM do Django - Baixa curva de aprendizado - Bastante estável e eficiente $ easy_install mongoengine
  • 62.
    MongoEngine - ORM para MongoDB - Sintaxe bem similhar ao ORM do Django - Baixa curva de aprendizado - Bastante estável e eficiente $ easy_install mongoengine
  • 63.
    MongoEngine - ORM para MongoDB - Sintaxe bem similhar ao ORM do Django - Baixa curva de aprendizado - Bastante estável e eficiente $ easy_install mongoengine http://www.mongoengine.org
  • 64.
    Exemplo MongoEngine from mongoengine import * class Usuario(Document): nome = StringField(required=True) email = StringField()
  • 65.
    Exemplo MongoEngine from mongoengine import * class Usuario(Document): nome = StringField(required=True) email = StringField() u = Usuario() u.nome = “Christiano” u.email = “anderson@gonow.com.br” u.save()
  • 66.
    Exemplo MongoEngine from mongoengine import * class Usuario(Document): nome = StringField(required=True) email = StringField() u = Usuario() u.nome = “Christiano” u.email = “anderson@gonow.com.br” u.save()
  • 67.
    Exemplo MongoEngine from mongoengine import * class Usuario(Document): nome = StringField(required=True) email = StringField() u = Usuario() u.nome = “Christiano” u.email = “anderson@gonow.com.br” u.save() Salvou no banco
  • 68.
    Consulta MongoEngine for u in User.objects: print u.nome, u.email
  • 69.
    MongoDB e Django É possível, mas ainda não tem uma solução oficial
  • 70.
    MongoDB e Django Pontos mais críticos na integração com Django: - Autenticação; - Sessões; - Admin; - Outras questões amarradas ao ORM...
  • 71.
    Django-MongoDB Pacote depende do django-nonrel e djangotoolbox Mais informações: http://django-mongodb.org/
  • 72.
    Django-MongoDB - Comoinstalar Django-nonrel hg clone http://bitbucket.org/wkornewald/django-nonrel cd django-nonrel && python setup.py install Djangotoolbox hg clone http://bitbucket.org/wkornewald/djangotoolbox cd djangotoolbox && python setup.py install Django-mongodb-engine git clone https://github.com/django-mongodb-engine/mongodb-engine cd mongodb-engine && python setup.py install
  • 73.
    Django-MongoDB - recursosinteressantes É possível utilizar GridFS, MapReduce, cache, agregadores e demais funcionalidadesdo MongoDB Mais informações: http://django-mongodb.org/topics/index.html
  • 74.
    settings.py DATABASES ={ 'default' : { 'ENGINE' : 'django_mongodb_engine', 'NAME' : 'my_database' } } Agora é só desenvolver sua app no Django :-)
  • 75.
    Como colaborar? Lista:http://groups.google.com/group/mongodb-user #MongoDB no irc.freenode.org
  • 76.
    Experimente o MongoDB Você pode experimentar o MongoDB sem precisar instalar nada! http://try.mongodb.org/
  • 77.
    Obrigado! :-) Christiano Anderson anderson@gonow.com.br Twitter: @dump Blog: http://christiano.me