Imagem de destaque do blog justcode.com.br.

Como utilizar o MongoEngine com o banco de dados MongoDB

Hoje veremos como utilizar o ODM MongoEngine com o banco de dados MongoDB através do conector pymongo.

MongoEngine

MongoEngine é um mapeador de objeto de documento (ODM) para MongoDB em Python.

Ele fornece uma maneira mais orientada a objetos de interagir com bancos de dados MongoDB em comparação com a API padrão fornecida pelo driver pymongo.

O MongoEngine permite que você defina modelos de dados como classes Python, onde cada instância da classe representa um documento no banco de dados MongoDB.

A sua instalação pode ser feita via pip::

pip install mongoengine

Pymongo

O pymongo é uma biblioteca Python oficial que permite interagir com o MongoDB, um banco de dados NoSQL de código aberto.

Ele fornece uma API simples e intuitiva para trabalhar com o MongoDB, permitindo que os desenvolvedores criem, atualizem, consultem e excluam dados de maneira eficiente.


Posts relacionados:


    O pymongo pode ser instalado usando o pip, que é o gerenciador de pacotes padrão do Python:

    pip install pymongo

    Depois de instalado, você pode importar o conector em seus scripts Python e usá-lo para se conectar a um servidor Redis e executar operações de banco de dados.


    Contêiner

    Para testar o código de exemplo foi utilizando o seguinte arquivo docker-compose.yaml:

    services:
      db:
        image: mongo:latest
        container_name: MongoDB
        restart: on-failure
        ports:
          - '27017:27017'
        environment:
          MONGO_INITDB_ROOT_USERNAME: dbuser
          MONGO_INITDB_ROOT_PASSWORD: 123456
          MONGO_INITDB_DATABASE: database_name
    

    📝 Contêiner testado com Docker e com o Podman.


    Exemplo de CRUD

    # -*- coding: utf-8 -*-
    """CRUD - Python - MongoEngine - MongoDB."""
    
    from mongoengine import Document, IntField, StringField, connect
    
    db = connect(
        username='dbuser',
        password='123456',
        host='localhost',
        port=27017,
        db='database_name',
        authentication_source='admin',
    )
    
    # username = 'dbuser'
    # password = '123456'
    # host = 'localhost'
    # port = 27017
    # db = 'database_name'
    # authentication_source = 'admin'
    # URI = f'mongodb://{username}:{password}@{host}:{port}/{db}?authSource={authentication_source}'
    # db = connect(host=URI)
    
    
    class CollectionName(Document):
        name = StringField(max_length=32)
        age = IntField(min_value=0, max_value=150)
        meta = {
            'collection': 'collection_name'
        }
    
        def __str__(self):
            return f'name={self.name}, age={self.age}'
    
    
    if __name__ == "__main__":
        CollectionName.drop_collection()
    
        # Create.
        print('[!] Create [!]')
        user = CollectionName(name='renato', age=35).save()
        obj_id = user.id
    
        # Bulk create.
        CollectionName.objects.insert(
            [
                CollectionName(name='Helena', age=20),
                CollectionName(name='João', age=50),
            ],
        )
    
        # Read.
        print('\n[!] Read [!]')
        print(CollectionName.objects)
        print(CollectionName.objects(id=obj_id))
        print(CollectionName.objects(age__gt=20))
    
        # Update.
        print('\n[!] Update [!]')
        print(CollectionName.objects(id=obj_id))
        CollectionName.objects(id=obj_id).update_one(
            name='joão',
        )
        print(CollectionName.objects(id=obj_id))
    
        # Delete.
        print('\n[!] Delete [!]')
        print(CollectionName.objects(id=obj_id))
    
        CollectionName.objects(id=obj_id).first().delete()
        print(CollectionName.objects(id=obj_id))
    
        db.close()
    

    Conclusão

    O MongoDB é uma poderosa ferramenta de banco de dados NoSQL que oferece flexibilidade, escalabilidade e desempenho para uma variedade de aplicações.

    Compreender os conceitos básicos, como documentos, coleções, consultas e índices, pode ajudá-lo a utilizar o MongoDB de forma eficaz em seus projetos de desenvolvimento.