Ще трябва да:
- Посочете
operationType: 'insert'
. Тъй като не искате да наблюдавате актуализациите, нямате нужда отupdateLookup
. - Създайте правилен тръбопровод за агрегиране
за вашия филтър, който включва
operationType
. - Тръбопроводът за агрегиране филтрира документи, които се връщат от
watch()
. Примерен изход е в страницата за промяна на събития .
watch()
връща ChangeStream
. Задейства close
, change
, end
и error
събития. Вижте ChangeStream
за повече подробности.
Ето пълен пример за поток от промени, който слуша insert
операция в базата данни test
колекция test
. Той ще изведе документи, които имат полето {a: 1}
('fullDocument.a': 1
) и ще игнорира актуализации, вмъквания на други стойности на a
, или нещо без полето 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()