Pular para conteúdo

Delete

Delete

O método delete está disponível em AsyncDbEngine e DbEngine e é usado para excluir documentos de uma coleção MongoDB com base em uma consulta especificada. Este método oferece uma maneira direta de remover documentos que atendem à consulta especificada do seu banco de dados MongoDB.

from pyodmongo import AsyncDbEngine, DbModel, DbResponse
from typing import ClassVar
import asyncio

engine = AsyncDbEngine(mongo_uri="mongodb://localhost:27017", db_name="my_db")


class Product(DbModel):
    name: str
    price: float
    is_available: bool
    _collection: ClassVar = "products"


async def main():
    query = Product.price <= 100

    response: DbResponse = await engine.delete(Model=Product, query=query)


asyncio.run(main())
from pyodmongo import DbEngine, DbModel, DbResponse
from typing import ClassVar

engine = DbEngine(mongo_uri="mongodb://localhost:27017", db_name="my_db")


class Product(DbModel):
    name: str
    price: float
    is_available: bool
    _collection: ClassVar = "products"


query = Product.price <= 100

response: DbResponse = engine.delete(Model=Product, query=query)

Argumentos

  • Model: DbModel: A classe que herda de DbModel e serve de base para consulta ao banco de dados.
  • query: ComparisonOperator | LogicalOperator: Consulta que define os critérios de seleção dos documentos a serem excluídos.
  • raw_query: dict (opcional): Uma consulta bruta em formato de dicionário aceita pelo MongoDB.

Warning

Nos bastidores, o método delete usa a operação delete_many do MongoDB para remover documentos. Todos os documentos que correspondam aos critérios de consulta serão excluídos da coleção.

Delete one

O método delete_one é semelhante ao método delete, a principal diferença é que ele excluirá apenas o primeiro documento que corresponder à consulta especificada.

from pyodmongo import AsyncDbEngine, DbModel, DbResponse
from typing import ClassVar
import asyncio

engine = AsyncDbEngine(mongo_uri="mongodb://localhost:27017", db_name="my_db")


class Product(DbModel):
    name: str
    price: float
    is_available: bool
    _collection: ClassVar = "products"


async def main():
    query = Product.name == "Box"

    response: DbResponse = await engine.delete(
        Model=Product, query=query, delete_one=True
    )


asyncio.run(main())
from pyodmongo import DbEngine, DbModel, DbResponse
from typing import ClassVar

engine = DbEngine(mongo_uri="mongodb://localhost:27017", db_name="my_db")


class Product(DbModel):
    name: str
    price: float
    is_available: bool
    _collection: ClassVar = "products"


query = Product.name == "Box"

response: DbResponse = engine.delete(Model=Product, query=query, delete_one=True)

Resposta do delete

O método delete no PyODMongo retorna um objeto DbResponse que fornece informações sobre o resultado da operação de exclusão. Este objeto contém vários atributos que dão insights sobre como a operação de exclusão afetou o banco de dados.

Atributos de DbResponse

  • acknowledged: bool: Um valor booleano indicando se a operação foi reconhecida pelo servidor MongoDB. Se a operação foi reconhecida, este atributo é definido como True, indicando que o servidor reconheceu e processou a solicitação de salvamento.

  • deleted_count: int: Um inteiro que representa o número de documentos que foram excluídos do banco de dados como parte da operação de exclusão.

  • inserted_count: int: Um inteiro que indica o número de documentos que foram inseridos com sucesso no banco de dados durante a operação de inserção.

  • matched_count: int: Um inteiro que representa o número de documentos no banco de dados que corresponderam à consulta ou critérios especificados durante a operação de salvamento. Este valor indica quantos documentos existentes foram atualizados como parte da operação de salvamento.

  • modified_count: int: Um inteiro que representa o número de documentos no banco de dados que foram realmente modificados durante a operação de salvamento. Este valor geralmente é igual ou um subconjunto de matched_count e indica quantos documentos tiveram seus campos alterados.

  • upserted_count: int: Um inteiro que representa o número de documentos que foram inseridos como resultado de uma operação upsert. Isso ocorre quando um documento não existe e é criado durante o processo de atualização.

  • upserted_ids: dict[int, Id]: Um dicionário que mapeia o índice dos documentos inseridos para seus novos IDs únicos. Este atributo é útil para rastrear quais documentos foram criados durante uma operação upsert.