Resumo
updateUm evento
updateocorre quando uma operação atualiza um documento em uma coleção.Observação
Desambiguação
Para saber mais sobre eventos que ocorrem quando as opções de coleta são modificadas, consulte o evento
modify.
Descrição
Campo | Tipo | Descrição | |||
|---|---|---|---|---|---|
| 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 | |||
| Timestamp |
Devido aos limites de tamanho do oplog , transações com vários documentos podem criar várias entradas no oplog. Em uma transação, os eventos de change stream encenados em uma determinada entrada do oplog compartilham o mesmo Em clusters fragmentados, eventos com o mesmo Para identificar eventos para uma única transação, você pode usar a combinação de | |||
| UUID | UUID identificando a coleção onde ocorreu a alteração. Novidades na versão 6.0. O campo | |||
| 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 | |||
| documento | O documento criado ou modificado por uma operação CRUD. Este campo aparece somente se você configurou o fluxo de alteração com Para mais informações, consulte Pesquisar documento completo para atualizar operações. Alterado na versão 6.0. A partir do MongoDB 6.0, se você definir a opção | |||
| documento | O documento antes das alterações serem aplicadas pela operação. Ou seja, a pré-imagem do documento. Este campo está disponível quando você habilita o campo Novidades na versão 6.0. | |||
| 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. | |||
| documento | O namespace (banco de dados e/ou coleção) afetado pelo evento. | |||
| string | O nome da coleção onde o evento ocorreu. | |||
| string | O nome do banco de dados onde ocorreu o evento. | |||
| string | O tipo de operação que os relatórios de notificação de alteração. Retorna um valor de | |||
| documento | Um documento que descreve os campos que foram atualizados ou removidos pela operação de atualização. | |||
updateDescription.removedFields | array | Uma array de campos que foram removidos pela operação de atualização. | |||
updateDescription.truncatedArrays | array | Uma array de documentos que registram truncamentos de array executados com atualizações baseadas em pipelin usando uma ou mais das seguintes etapas: Se toda a array for substituída, as truncações serão reportadas em updateDescription.updatedFields. | |||
updateDescription.truncatedArrays.field | string | O nome do campo truncado. | |||
updateDescription.truncatedArrays.newSize | inteiro | O número de elementos na array truncada. | |||
updateDescription.updatedFields | documento | Um documento cujas chaves correspondem aos campos que foram modificados pela operação de atualização. O valor de cada campo corresponde ao novo valor desses campos, em vez da operação que resultou no novo valor. | |||
| 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. | |||
| 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
changeStreamPreAndPostImagespara uma coleção utilizandodb.createCollection(),createoucollMod.Configure
fullDocumentBeforeChangepara"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
expireAfterSecondspara100segundos 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 do fluxo de alterações para menos de 16 mebibytes. 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
updateDescriptionnão forem grandes.Solicite apenas pós-imagens na saída do fluxo de alterações para documentos de até 16 mebibytes se outros campos de evento de fluxo de alterações como
updateDescriptionnão forem grandes.Solicite somente pré-imagens na saída do change stream para documentos de até 16 mebibytes 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 eventoreplacesempre inclui o pós-imagem.
Para solicitar uma pré-imagem, defina
fullDocumentBeforeChangecomorequiredouwhenAvailableemdb.collection.watch(). Para solicitar uma pós-imagem, definafullDocumentusando o mesmo método.As pré-imagens são escritas na coleção
config.system.preimages.A coleção
config.system.preimagespode ficar grande. Para limitar o tamanho da coleção, você pode definirexpireAfterSecondstempo 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
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 update:
{ "_id": { <Resume Token> }, "operationType": "update", "clusterTime": <Timestamp>, "wallTime": <ISODate>, "ns": { "db": "engineering", "coll": "users" }, "documentKey": { "_id": ObjectId("58a4eb4a30c75625e00d2820") }, "updateDescription": { "updatedFields": { "email": "alice@10gen.com" }, "removedFields": ["phoneNumber"], "truncatedArrays": [ { "field" : "vacation_time", "newSize" : 36 } ] } }
O exemplo seguinte ilustra um evento update para alterar fluxos abertos com a opção fullDocument : updateLookup:
{ "_id": { <Resume Token> }, "operationType": "update", "clusterTime": <Timestamp>, "wallTime": <ISODate>, "ns": { "db": "engineering", "coll": "users" }, "documentKey": { "_id": ObjectId("58a4eb4a30c75625e00d2820") }, "updateDescription": { "updatedFields": { "email": "alice@10gen.com" }, "removedFields": ["phoneNumber"], "truncatedArrays": [ { "field" : "vacation_time", "newSize" : 36 } ] }, "fullDocument": { "_id": ObjectId("58a4eb4a30c75625e00d2820"), "name": "Alice", "userName": "alice123", "email": "alice@10gen.com", "team": "replication" } }
O documento fullDocument representa a versão mais atual acordada majoritariamente do documento atualizado. O documento fullDocument pode variar do documento no momento da operação de atualização, dependendo do número de operações de intercalação confirmadas que ocorrem entre a operação de atualização e a pesquisa do documento.