आपको यह करना होगा:
- निर्दिष्ट करें
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()