Página inicial do Docs → Desenvolver aplicações → Manual do MongoDB
db.collection.deleteMany()
Definição
db.collection.deleteMany()
Importante
Método mongosh
Esta página documenta um método
mongosh
. Esta não é a documentação para comandos de banco de dados ou drivers específicos de idioma, como Node.js.Para o comando do banco de dados, consulte o comando
delete
.Para drivers de API do MongoDB, consulte a documentação do driver MongoDB específica do idioma.
Para a documentação de shell legada do
mongo
, consulte a documentação para a versão correspondente do MongoDB Server:Remove todos os documentos que correspondem ao
filter
de uma collection.Retorna: Um documento contendo: Um valor booleano
acknowledged
comotrue
se a operação for executada com referência de escritarefer oufalse
se a referência de escrita estiver desativadadeletedCount
contendo o número de documentos excluídos
Compatibilidade
Você pode utilizar o db.collection.deleteMany()
para implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações MongoDB na nuvem
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão código-disponível, de uso gratuito e autogerenciada do MongoDB
Sintaxe
O método deleteMany()
tem a seguinte sintaxe:
db.collection.deleteMany( <filter>, { writeConcern: <document>, collation: <document> } )
Parâmetro | Tipo | Descrição | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
documento | Especifica os critérios de exclusão usando operadores de query. Para excluir todos os documentos de uma collection, passe um documento vazio ( | |||||||||||
documento | Opcional. Um documento que expressa o write concern. Omitir para usar o write concern padrão. Não defina explicitamente a preocupação de gravação para a operação se for executada em uma transação. Para usar write concern com transações, consulte Transações e write concern. | |||||||||||
documento | Opcional. Especifica o agrupamento a ser usado para a operação. A colocação permite que os usuários especifiquem regras específicas do idioma para comparação de strings, como regras para letras maiúsculas e marcas de acento. A opção de agrupamento tem a seguinte sintaxe:
Ao especificar agrupamento, o campo Se o agrupamento não for especificado, mas a coleção tiver um agrupamento padrão (consulte Se nenhum agrupamento for especificado para a collection ou para as operações, o MongoDB usa a comparação binária simples usada nas versões anteriores para comparações de strings. Você não pode especificar vários agrupamentos para uma operação. Por exemplo, você não pode especificar agrupamentos diferentes por campo ou, se estiver realizando uma busca com uma classificação, não poderá usar um agrupamento para a busca e outro para a classificação. | |||||||||||
documento | Opcional. Um documento ou string que especifica o índice a ser usado para dar suporte ao predicado de query. A opção pode usar um documento de especificação de índice ou a string do nome do índice. Se você especificar um índice que não existe, a operação ocorrerá erros. Para um exemplo, consulte Especificar |
Comportamento
Coleções de Time Series
db.collection.deleteMany()
lança uma exceção WriteError
se usado em uma coleção de séries temporais. Para remover todos os documentos de uma coleção de séries temporais, use db.collection.drop()
.
Excluir um único documento
Para excluir um único documento, use db.collection.deleteOne()
em vez disso.
Ou então, use um campo que faça parte de um índice único , como _id
.
Transações
db.collection.deleteMany()
pode ser usado dentro de transações distribuídas.
Não defina explicitamente a preocupação de gravação para a operação se for executada em uma transação. Para usar write concern com transações, consulte Transações e write concern.
Importante
Na maioria dos casos, uma transação distribuída incorre em um custo de desempenho maior do que as gravações de um único documento, e a disponibilidade de transações distribuídas não deve substituir o design eficaz do esquema. Em muitos cenários, o modelo de dados desnormalizado (documentos e arrays incorporados) continuará a ser ideal para seus dados e casos de uso. Ou seja, para muitos cenários, modelar seus dados adequadamente minimizará a necessidade de transações distribuídas.
Para considerações adicionais sobre o uso de transações (como limite de tempo de execução e limite de tamanho do oplog), consulte também Considerações de produção.
Falha do nó primary
db.collection.deleteMany()
exclui documentos um de cada vez. Se o nó primary falhar durante uma operação db.collection.deleteMany()
, os documentos que ainda não foram excluídos dos nós secundários não serão excluídos da collection.
Entradas Oplog
Se uma operação db.collection.deleteMany()
excluir com êxito um ou mais documentos, a operação adicionará uma entrada para cada documento excluído no oplog (registro de operações). Se a operação falhar ou não encontrar nenhum documento para excluir, a operação não adicionará uma entrada no oplog.
Exemplos
Excluir vários documentos
A coleção orders
tem documentos com a seguinte estrutura:
db.orders.insertOne( { _id: ObjectId("563237a41a4d68582c2509da"), stock: "Brent Crude Futures", qty: 250, type: "buy-limit", limit: 48.90, creationts: ISODate("2015-11-01T12:30:15Z"), expiryts: ISODate("2015-11-01T12:35:15Z"), client: "Crude Traders Inc." } )
A seguinte operação exclui todos os documentos onde client : "Crude Traders
Inc."
:
try { db.orders.deleteMany( { "client" : "Crude Traders Inc." } ); } catch (e) { print (e); }
A operação retorna:
{ "acknowledged" : true, "deletedCount" : 10 }
A operação a seguir exclui todos os documentos em que stock : "Brent Crude
Futures"
e limit
são maiores que 48.88
:
try { db.orders.deleteMany( { "stock" : "Brent Crude Futures", "limit" : { $gt : 48.88 } } ); } catch (e) { print (e); }
A operação retorna:
{ "acknowledged" : true, "deletedCount" : 8 }
deleteMany() with Write Concern
Dado um conjunto de réplicas de três membros, a operação a seguir especifica um w
de majority
e wtimeout
de 100
try { db.orders.deleteMany( { "client" : "Crude Traders Inc." }, { writeConcern: { w : "majority", wtimeout : 100 }} ); } catch (e) { print (e); }
Se a confirmação demorar mais que o limite wtimeout
, a exceção será lançada:
WriteConcernError({ "code" : 64, "errmsg" : "waiting for replication timed out", "errInfo" : { "wtimeout" : true, "writeConcern" : { "w" : "majority", "wtimeout" : 100, "provenance" : "getLastErrorDefaults" } } })
Dica
Veja também:
Especifique o agrupamento
A colocação permite que os usuários especifiquem regras específicas do idioma para comparação de strings, como regras para letras maiúsculas e marcas de acento.
Uma coleção restaurants
possui os seguintes documentos:
db.restaurants.insertMany( [ { _id: 1, category: "café", status: "A" }, { _id: 2, category: "cafe", status: "a" }, { _id: 3, category: "cafE", status: "a" } ] )
A seguinte operação inclui a opção coleção:
db.restaurants.deleteMany( { category: "cafe", status: "A" }, { collation: { locale: "fr", strength: 1 } } )
Especificar hint
para operações de exclusão
No mongosh
, crie uma coleção do members
com os seguintes documentos:
db.members.insertMany([ { "_id" : 1, "member" : "abc123", "status" : "P", "points" : 0, "misc1" : null, "misc2" : null }, { "_id" : 2, "member" : "xyz123", "status" : "A", "points" : 60, "misc1" : "reminder: ping me at 100pts", "misc2" : "Some random comment" }, { "_id" : 3, "member" : "lmn123", "status" : "P", "points" : 0, "misc1" : null, "misc2" : null }, { "_id" : 4, "member" : "pqr123", "status" : "D", "points" : 20, "misc1" : "Deactivated", "misc2" : null }, { "_id" : 5, "member" : "ijk123", "status" : "P", "points" : 0, "misc1" : null, "misc2" : null }, { "_id" : 6, "member" : "cde123", "status" : "A", "points" : 86, "misc1" : "reminder: ping me at 100pts", "misc2" : "Some random comment" } ])
Crie os seguintes índices na coleção:
db.members.createIndex( { status: 1 } ) db.members.createIndex( { points: 1 } )
A seguinte operação de exclusão sugere explicitamente o uso do índice { status: 1 }
:
db.members.deleteMany( { "points": { $lte: 20 }, "status": "P" }, { hint: { status: 1 } } )
Observação
Se você especificar um índice que não existe, a operação ocorrerá erros.
O comando delete retorna o seguinte:
{ "acknowledged" : true, "deletedCount" : 3 }
Para visualizar os índices usados, é possível usar o pipeline $indexStats
:
db.members.aggregate( [ { $indexStats: { } }, { $sort: { name: 1 } } ] )
O campo accesses.ops
na saída $indexStats
indica o número de operações que utilizaram o índice.