Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

db.collection.deleteOne()

Nesta página

  • Definição
  • Compatibilidade
  • Sintaxe
  • Comportamento
  • Exemplos
db.collection.deleteOne()

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:

mongo shell v4.4

Remove um único documento de uma coleção.

Retorna:Um documento contendo:
  • Um valor booleano acknowledged como true se a operação for executada com referência de escritarefer ou false se a referência de escrita estiver desativada

  • deletedCount contendo o número de documentos excluídos

Você pode utilizar o db.collection.deleteOne() para implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações MongoDB na nuvem

O método deleteOne() tem o seguinte formulário:

db.collection.deleteOne(
<filter>,
{
writeConcern: <document>,
collation: <document>,
hint: <document|string>
}
)

O método deleteOne() utiliza os seguintes parâmetros:

Parâmetro
Tipo
Descrição
filtro, filtro
documento

Especifica os critérios de exclusão usando operadores de query.

Especifique um documento vazio { } para excluir o primeiro documento retornado na coleção.

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:

collation: {
locale: <string>,
caseLevel: <boolean>,
caseFirst: <string>,
strength: <int>,
numericOrdering: <boolean>,
alternate: <string>,
maxVariable: <string>,
backwards: <boolean>
}

Ao especificar agrupamento, o campo locale é obrigatório; todos os outros campos de agrupamento são opcionais. Para obter descrições dos campos, consulte Documento de agrupamento.

Se o agrupamento não for especificado, mas a coleção tiver um agrupamento padrão (consulte db.createCollection()), a operação usará o agrupamento especificado para a coleção.

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 hint para Excluir Operações.

db.collection.deleteOne() exclui o primeiro documento que corresponde ao filtro. Use um campo que faça parte de um índice único , como _id , para exclusões precisas.

Para usar db.collection.deleteOne() em uma collection fragmentada:

  • Se você segmentar apenas um fragmento, poderá usar uma chave de fragmento parcial na especificação da consulta ou,

  • Você pode fornecer a chave de estilhaço ou o campo _id na especificação de consulta.

db.collection.deleteOne() 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.

Se uma operação db.collection.deleteOne() excluir um documento com êxito, a operação adicionará uma entrada no oplog (registro de operações). Se a operação falhar ou não localizar um documento para excluir, a operação não adicionará uma entrada no oplog.

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 o pedido com _id: ObjectId("563237a41a4d68582c2509da") :

try {
db.orders.deleteOne( { _id: ObjectId("563237a41a4d68582c2509da") } );
} catch (e) {
print(e);
}

A operação retorna:

{ acknowledged: true, deletedCount: 1 }

A operação a seguir exclui o primeiro documento com expiryts maior que ISODate("2015-11-01T12:40:15Z")

try {
db.orders.deleteOne( { expiryts: { $lt: ISODate("2015-11-01T12:40:15Z") } } );
} catch (e) {
print(e);
}

A operação retorna:

{ acknowledged: true, deletedCount: 1 }

Dado um conjunto de réplicas de três nós, a operação a seguir especifica um w de majority, wtimeout de 100:

try {
db.orders.deleteOne(
{ _id: ObjectId("563237a41a4d68582c2509da") },
{ 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

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.deleteOne(
{ category: "cafe", status: "A" },
{ collation: { locale: "fr", strength: 1 } }
)

No mongosh, crie uma coleção do students com os seguintes documentos:

db.members.insertMany( [
{ _id: 1, student: "Richard", grade: "F", points: 0 },
{ _id: 2, student: "Jane", grade: "A", points: 60 },
{ _id: 3, student: "Adam", grade: "F", points: 0 },
{ _id: 4, student: "Ronan", grade: "D", points: 20 },
{ _id: 5, student: "Noah", grade: "F", points: 0 },
{ _id: 6, student: "Henry", grade: "A", points: 86 }
] )

Criar o seguinte índice na coleção:

db.members.createIndex( { grade: 1 } )

A seguinte operação de exclusão sugere explicitamente o uso do índice { grade: 1 }:

db.members.deleteOne(
{ points: { $lte: 20 }, grade: "F" },
{ hint: { grade: 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: 1 }

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.

Dica

Veja também:

Para excluir vários documentos, consulte db.collection.deleteMany()

← db.collection.dataSize()