$changeStream (agregaĆ§Ć£o)
Nesta pƔgina
DefiniĆ§Ć£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Ć¢metroDescriĆ§Ć£oallChangesForCluster
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 deupdate
.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 dechangeStreamPreAndPostImages
.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 ounull
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 ounull
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 dechangeStreamPreAndPostImages
.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 comstartAfter
estartAtOperationTime
.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 eventoinvalidate
criando um novo fluxo de alteraƧƵes.startAfter
Ć© mutuamente exclusivo comresumeAfter
estartAtOperationTime
.startAtOperationTime
Especifica uma hora como o ponto de partida lĆ³gico para o change stream. NĆ£o pode ser utilizado com campos
resumeAfter
oustartAfter
.
Suporte Ć API EstĆ”vel
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.
Exemplos
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.