Menu Docs

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

$changeStream (agregação)

Nesta página

  • Definição
  • Exemplos
$changeStream

Gera um cursor de Change Stream em uma collection, banco de dados ou cluster inteiro. Deve ser usado como o primeiro estágio em um aggregation pipeline.

O estágio $changeStream tem a seguinte sintaxe:

{
$changeStream: {
allChangesForCluster: <boolean>,
fullDocument: <string>,
fullDocumentBeforeChange: <string>,
resumeAfter: <int>
showExpandedEvents: <boolean>,
startAfter: <document>
startAtOperationTime: <timestamp>
}
}
Parâmetro
Descrição
allChangesForCluster
Opcional: define se o fluxo de alterações deve incluir todas as alterações no cluster. Só pode ser aberto no banco de dados admin.
fullDocument

Opcional: Especifica se as notificações de alteração incluem uma cópia do documento completo quando modificado por operações update.

  • default: notificações de alteração não incluem o documento completo para operações de update.

  • required: as notificações de alteração incluem uma cópia do documento modificado conforme ele apareceu imediatamente após a alteração. Se o documento não for encontrado, o change stream gerará um erro.

    Para usar esta opção, você deve primeiro utilizar o comando collMod para habilitar a opção de changeStreamPreAndPostImages.

    Novidades na versão 6.0.

  • updateLookup: as notificações de alteração incluem uma cópia do documento modificado pela alteração. Este é o documento confirmado pela maioria atual ou null se não existir mais.

  • whenAvailable: A notificação de alteração inclui uma cópia do documento modificado como ele apareceu imediatamente após a alteração ou null se o documento não estiver disponível.

    Para usar esta opção, você deve primeiro utilizar o comando collMod para habilitar a opção de changeStreamPreAndPostImages.

    Novidades na versão 6.0.

No caso de atualizações parciais, a notificação de alteração também fornece uma descrição da alteração.

fullDocumentBeforeChange

Inclua o documento completo antes da alteração. Este campo aceita os seguintes valores:

  • off: Desabilita a inclusão do documento antes da alteração.

  • whenAvailable: Inclui documento anterior à alteração. A query não falhará se o documento não modificado não estiver disponível.

  • required: inclui documento anterior à alteração. A query falha se o documento não modificado não estiver disponível.

resumeAfter
Especifica um token de currículo como o ponto de partida lógico para o fluxo de alteração. Não pode ser utilizado com campos startAfter ou startAtOperationTime.
showExpandedEvents

Especifica se incluir eventos de mudança adicionais, como DDL e operações de índice.

Novidades na versão 6.0.

startAfter
Especifica um token de currículo como o ponto de partida lógico para o fluxo de alteração. Não pode ser utilizado com campos resumeAfter ou startAtOperationTime.
startAtOperationTime
Especifica uma hora como o ponto de partida lógico para o change stream. Não pode ser utilizado com campos resumeAfter ou startAfter.

Para criar um cursor de change stream com o estágio de aggregation, execute o comando aggregate.

var cur = db.names.aggregate( [
{ $changeStream: {} }
] )

Para abrir o cursor, execute cur.

Quando o fluxo de alteração detecta uma alteração, o método next() retorna uma notificação de alteração de evento. Por exemplo, após executar o cur.next(), o MongoDB retorna um documento semelhante ao seguinte:

{
"_id": {
_data: "8262E2EE54000000022B022C0100296E5A100448E5E3DD01364019AE8FE8C6859527E046645F6964006462E2EE54C8756C0D5CF6F0720004"
},
"operationType": "insert",
"clusterTime": Timestamp({ t: 1659039316, i: 2 }),
"wallTime": ISODate("2022-07-28T20:15:16.148Z"),
"fullDocument": {
"_id": ObjectId("62e2ee54c8756c0d5cf6f072"),
"name": "Walker Percy"
},
"ns": {
"db": "test",
"coll": "names"
},
"documentKey": { _id: ObjectId("62e2ee54c8756c0d5cf6f072") }
}

Para mais informações sobre como alterar as notificações de transmissão, consulte Alterar eventos.

← $bucketAuto (agregação)

Nesta página