Change streams
Sigue los cambios de una colección, una base o todo el clúster, en orden de commit.
Los change streams de MongoDB funcionan sobre una colección, una base de datos o todo el clúster. Los eventos salen en orden de commit, con las transacciones juntas, sin pérdidas ni duplicados aunque los rangos se dividan, se fusionen o cambien de líder.
const stream = db.pedidos.watch([{ $match: { operationType: { $in: ["insert", "update"] } } }]);
for await (const cambio of stream) {
console.log(cambio.operationType, cambio.documentKey);
}Reanudar
Cada evento lleva un token de reanudación. Si tu aplicación se cae, vuelve a abrir el stream con resumeAfter o
startAfter y sigue donde lo dejó. Puedes reanudar mientras el cambio siga en el historial que conserva el clúster:
24 horas por defecto, que cambias con el parámetro teselaHistoryRetention.
db.adminCommand({ setClusterParameter: { teselaHistoryRetention: { seconds: 172800 } } });Pre-imágenes y post-imágenes
Activa changeStreamPreAndPostImages en la colección y pide fullDocumentBeforeChange o fullDocument: "updateLookup" como en MongoDB. changeStreamOptions.preAndPostImages.expireAfterSeconds limita cuánto tiempo se
guardan.
Eventos de DDL y grandes
Los eventos de creación, borrado y cambio de colecciones e índices salen con showExpandedEvents, y un evento que
supera 16 MiB se parte con $changeStreamSplitLargeEvent.