Definição
$changeStreamGera 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
$changeStreamtem a seguinte sintaxe:{ $changeStream: { allChangesForCluster: <boolean>, fullDocument: <string>, resumeAfter: <document> startAfter: <document> startAtOperationTime: <timestamp> } } ParâmetroDescriçãoallChangesForClusterOpcional: define se o fluxo de alterações deve incluir todas as alterações no cluster. Só pode ser aberto no banco de dados
admin.fullDocumentOpcional: 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.updateLookup: as notificações de alteração incluem uma cópia do documento modificado pela alteração. Este é o documento confirmado pela maioria atual ounullse não existir mais.
No caso de atualizações parciais, a notificação de alteração também fornece uma descrição da alteração.
resumeAfterOpcional. 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 comstartAfterestartAtOperationTime.startAfterOpcional. Especifica um token de resumo como o ponto de partida lógico para o fluxo de alterações. Ao contrário de
resumeAfter,startAfterpode retomar notificações após um eventoinvalidatecriando um novo fluxo de alterações.startAfteré mutuamente exclusivo comresumeAfterestartAtOperationTime.startAtOperationTimeEspecifica uma hora como o ponto de partida lógico para o change stream. Não pode ser utilizado com campos
resumeAfteroustartAfter.
Suporte à API Estável
Os change streams estão incluídos 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 }), "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.