Anda perlu:
- Tentukan
operationType: 'insert'
. Karena Anda tidak ingin memantau pembaruan, Anda tidak perluupdateLookup
. - Buat pipa agregasi
yang tepat untuk filter Anda yang menyertakan
operationType
. - Pipa agregasi memfilter dokumen yang dikembalikan oleh
watch()
. Contoh keluaran ada di halaman Ubah Acara .
watch()
mengembalikan ChangeStream
. Ini menembakkan close
, change
, end
, dan error
acara. Lihat ChangeStream
untuk lebih jelasnya.
Berikut adalah contoh lengkap dari changestream yang mendengarkan di insert
operasi pada database test
koleksi test
. Ini akan menampilkan dokumen yang memiliki bidang {a: 1}
('fullDocument.a': 1
) dan akan mengabaikan pembaruan, sisipan nilai lain dari a
, atau apa pun tanpa bidang 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()