Você precisaria:
- Especifique
operationType: 'insert'
. Como você não deseja monitorar as atualizações, não precisa deupdateLookup
. - Crie um pipeline de agregação
adequado para seu filtro que inclui
operationType
. - O pipeline de agregação filtra os documentos retornados por
watch()
. Um exemplo de saída está na página Alterar eventos .
watch()
retorna um ChangeStream
. Ele dispara close
, change
, end
e error
eventos. Consulte ChangeStream
para mais detalhes. Aqui está um exemplo completo de um fluxo de mudança que escuta em
insert
operação no banco de dados test
coleção test
. Ele produzirá documentos que tenham o campo {a: 1}
('fullDocument.a': 1
) e ignorará atualizações, inserções de outros valores de a
, ou qualquer coisa sem o 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()