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 deDbModel
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 comoTrue
, 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 dematched_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.