Filtrar eventos

Recibe solo los eventos que te interesan con un pipeline en watch.

Recibe solo los eventos que te interesan pasando un pipeline a watch. El filtro se aplica en el servidor, así que los demás eventos no viajan por la red.

Requisitos

  • Un usuario con los privilegios find y changeStream sobre lo que vigilas.

Filtrar por tipo y por campo

JavaScript
const stream = db.pedidos.watch([
  { $match: { operationType: "update", "updateDescription.updatedFields.estado": "pagado" } },
  { $project: { documentKey: 1, "updateDescription.updatedFields": 1 } },
]);

Traer el documento entero

JavaScript
const stream = db.pedidos.watch([], { fullDocument: "updateLookup" });

Comprobar

Con el stream abierto, un updateOne que cambia el estado a pagado produce un evento y uno que cambia otro campo no.

Problemas frecuentes

  • Un $project que quita _id deja el evento sin token de reanudación y el stream falla.

Ver también