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()