Necesitarías:
- Especifique
operationType: 'insert'. Como no desea monitorear las actualizaciones, no necesitaupdateLookup. - Cree una tubería de agregación adecuada
para su filtro que incluye
operationType. - La canalización de agregación filtra los documentos que devuelve
watch(). Un resultado de ejemplo se encuentra en la página Change Events .
watch() devuelve un ChangeStream . Dispara close , change , end y error eventos. Consulte ChangeStream
para más detalles.
Aquí hay un ejemplo completo de un flujo de cambios que escucha en insert operación en la base de datos test colección test . Emitirá documentos que tengan el campo {a: 1} ('fullDocument.a': 1 ) e ignorará actualizaciones, inserciones de otros valores de a , o cualquier cosa sin el campo a .
const MongoClient = require('mongodb').MongoClient
const uri = 'mongodb://localhost:27017/test?replicaSet=replset'
const insert_pipeline = [
{$match: {operationType: 'insert', 'fullDocument.a': 1}}
]
function watch_insert(con, db, coll) {
console.log(new Date() + ' watching: ' + coll)
con.db(db).collection(coll).watch(insert_pipeline)
.on('change', data => {
console.log(data)
})
}
async function run() {
con = await MongoClient.connect(uri, {"useNewUrlParser": true})
watch_insert(con, 'test', 'test')
}
run()