excluir evento
Synopsis
delete
Um evento
delete
ocorre quando as operações removem documentos de uma collection, como quando um usuário ou aplicação executa o comandodelete
.
Descrição
Campo | Tipo | Descrição | |||
---|---|---|---|---|---|
_id | Documento | Um objeto BSON que serve como um identificador para o evento de fluxo de alterações. Este valor é utilizado como
O tipo de Para obter um exemplo de como retomar um fluxo de alterações por | |||
clusterTime | Timestamp | O carimbo de data/hora da entrada de registro opcional associada ao evento. Todas as notificações de eventos do fluxo de alterações associadas a uma transação com vários documentos têm o mesmo valor Em clusters fragmentados, eventos com o mesmo Para identificar eventos para uma única transação, você pode usar a combinação de | |||
collectionUUID | UUID | UUID identificando a coleção onde ocorreu a alteração. Novidades na versão 6.0. | |||
documentKey | documento | Documento que contém o valor Para coleções fragmentadas, este campo também exibe a chave de fragmentação completa do documento. O campo | |||
lsid | documento | O identificador da sessão associada à transação. Somente presente se a operação fizer parte de uma transação de vários documentos. | |||
ns | documento | O namespace (banco de dados e/ou coleção) afetado pelo evento. | |||
ns.coll | string | O nome da coleção onde o evento ocorreu. | |||
ns.db | string | O nome do banco de dados onde ocorreu o evento. | |||
operationDescription | documento | Informações adicionais sobre a operação de alteração. Esse documento e seus subcampos só aparecem quando o fluxo de alterações usa eventos expandidos. Novidades na versão 6.0. | |||
operationType | string | O tipo de operação que os relatórios de notificação de alteração. Retorna um valor de | |||
txnNumber | Número longo | Juntamente com o lsid, um número que ajuda a identificar exclusivamente uma transação. Somente presente se a operação fizer parte de uma transação de vários documentos. | |||
wallTime | A data e hora do servidor da operação do banco de dados. Novidades na versão 6.0. |
Comportamento
Documentar pré e pós-imagens
A partir do MongoDB 6.0, você verá um documento fullDocumentBeforeChange
com os campos antes de o documento ser alterado (ou excluído) se executar estas etapas:
Ative o novo campo
changeStreamPreAndPostImages
para uma coleção utilizandodb.createCollection()
,create
oucollMod
.Configure
fullDocumentBeforeChange
para"required"
ou"whenAvailable"
emdb.collection.watch()
.
Exemplo de documento fullDocumentBeforeChange
na saída do fluxo de mudança:
"fullDocumentBeforeChange" : { "_id" : ObjectId("599af247bb69cd89961c986d"), "userName" : "alice123", "name" : "Alice Smith" }
Para obter exemplos completos com a saída do fluxo de alterações, consulte Fluxos de alterações com imagens pré e pós-documento.
As imagens pré e pós não estarão disponíveis para um change stream se as imagens forem:
Não habilitadas na coleção no momento de uma operação de atualização ou exclusão de documento.
Removido após o tempo de retenção pré e pós-imagem definido em
expireAfterSeconds
.O exemplo a seguir define
expireAfterSeconds
para100
segundos em um cluster inteiro:use admin db.runCommand( { setClusterParameter: { changeStreamOptions: { preAndPostImages: { expireAfterSeconds: 100 } } } } ) O exemplo a seguir retorna as configurações atuais do
changeStreamOptions
, incluindoexpireAfterSeconds
:db.adminCommand( { getClusterParameter: "changeStreamOptions" } ) Se um change stream for removido do oplog, as imagens pré e pós correspondentes também serão excluídas, independentemente do tempo de retenção pré e pós-imagem
expireAfterSeconds
.
Considerações adicionais:
Habilitar pré e pós-imagens consome espaço de armazenamento e adiciona tempo de processamento. Ative as imagens anteriores e posteriores somente se precisar delas.
Limite o tamanho do evento de transmissão da alteração para menos de 16 megabytes. Para limitar o tamanho do evento, você pode:
Limite o tamanho do documento a 8 megabytes. Você pode solicitar imagens pré e pós simultaneamente na saída do change stream se outros campos de evento de change stream, como
updateDescription
não forem grandes.Solicite apenas pós-imagens na saída de fluxo de alteração para documentos de até 16 megabytes se outros campos de evento de fluxo de alteração como
updateDescription
não forem grandes.Solicite somente pré-imagens na saída do change stream para documentos de até 16 megabytes se:
as atualizações do documento afetam apenas uma pequena fração da estrutura ou conteúdo do documento, e
não causa um evento de alteração
replace
. Um eventoreplace
sempre inclui o pós-imagem.
Para solicitar uma pré-imagem, defina
fullDocumentBeforeChange
comorequired
ouwhenAvailable
emdb.collection.watch()
. Para solicitar uma pós-imagem, definafullDocument
usando o mesmo método.As pré-imagens são escritas na coleção
config.system.preimages
.A coleção
config.system.preimages
pode ficar grande. Para limitar o tamanho da coleção, você pode definirexpireAfterSeconds
tempo para as pré-imagens, conforme mostrado anteriormente.As pré-imagens são removidas de forma assíncrona por um processo de plano de fundo.
Importante
Funcionalidade incompatível com versões anteriores
A partir do MongoDB 6.0, se você estiver usando imagens anteriores e posteriores de documentos para change streams, deverá desabilitar changeStreamPreandPostImages para cada coleção usando o collMod
comando antes de poder fazer o downgrade para uma versão anterior do MongoDB.
Dica
Veja também:
Para alterar eventos de transmissão e saída, consulte Alterar eventos.
Para observar alterações em uma collection, consulte
db.collection.watch()
.Para obter exemplos completos com a saída do fluxo de alterações, consulte Fluxos de alterações com imagens pré e pós-documento.
Exemplo
O exemplo seguinte ilustra um evento delete
:
{ "_id": { <Resume Token> }, "operationType": "delete", "clusterTime": <Timestamp>, "wallTime": <ISODate>, "ns": { "db": "engineering", "coll": "users" }, "documentKey": { "_id": ObjectId("599af247bb69cd89961c986d") } }
O documento fullDocument
é omitido, pois o documento não existe mais no momento em que o cursor do fluxo de alterações envia o evento delete
para o cliente.