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