Bạn cần:
- Chỉ định
operationType: 'insert'
. Vì bạn không muốn theo dõi các bản cập nhật, bạn không cầnupdateLookup
. - Tạo đường ống tổng hợp
thích hợp cho bộ lọc của bạn bao gồm
operationType
. - Đường ống tổng hợp lọc các tài liệu được trả về bởi
watch()
. Một kết quả mẫu nằm trong trang Sự kiện thay đổi .
watch()
trả về một ChangeStream
. Nó kích hoạt close
, change
, end
và error
sự kiện. Xem ChangeStream
để biết thêm chi tiết.
Đây là ví dụ đầy đủ về luồng thay đổi lắng nghe trên insert
hoạt động trên cơ sở dữ liệu test
bộ sưu tập test
. Nó sẽ xuất ra các tài liệu có trường {a: 1}
('fullDocument.a': 1
) và sẽ bỏ qua các cập nhật, chèn các giá trị khác của a
hoặc bất kỳ thứ gì không có trường 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()