Menu Docs

$changeStream (agregaĆ§Ć£o)

$changeStream

Gera um cursor deChange Stream em uma collection, banco de dados de dados ou cluster inteiro. Deve ser usado como o primeiro estĆ”gio em um agregaĆ§Ć£o pipeline.

O estƔgio $changeStream tem a seguinte sintaxe:

{
$changeStream: {
allChangesForCluster: <boolean>,
fullDocument: <string>,
fullDocumentBeforeChange: <string>,
resumeAfter: <document>
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

Opcional. Especifica um token de currĆ­culo como o ponto de partida lĆ³gico para o fluxo de alteraĆ§Ć£o. NĆ£o pode ser usado para retomar o fluxo de alteraƧƵes apĆ³s um evento invalidate.

resumeAfter Ć© mutuamente exclusivo com startAfter e startAtOperationTime.

showExpandedEvents

Especifica se incluir eventos de mudanƧa adicionais, como DDL e operaƧƵes de ƭndice.

Novidades na versĆ£o 6.0.

startAfter

Opcional. Especifica um token de resumo como o ponto de partida lĆ³gico para o fluxo de alteraƧƵes. Ao contrĆ”rio de resumeAfter, startAfter pode retomar notificaƧƵes apĆ³s um evento invalidate criando um novo fluxo de alteraƧƵes.

startAfter Ć© mutuamente exclusivo com resumeAfter e 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.

Os change streams estĆ£o incluĆ­dos na Stable API V1. No entanto, a opĆ§Ć£o showExpandedEvents nĆ£o estĆ” incluĆ­da na Stable API V1.

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.