Sie müssten:
- Geben Sie
operationType: 'insert'
an . Da Sie Updates nicht überwachen möchten, benötigen SieupdateLookup
nicht . - Erstellen Sie eine geeignete Aggregationspipeline
für Ihren Filter, der
operationType
enthält . - Die Aggregationspipeline filtert Dokumente, die von
watch()
zurückgegeben werden . Eine Beispielausgabe finden Sie auf der Seite "Ereignisse ändern" .
watch()
gibt einen ChangeStream
zurück . Es feuert close
, change
, end
, und error
Veranstaltungen. Siehe ChangeStream
für weitere Details.
Hier ist ein vollständiges Beispiel für einen Changestream, der auf insert
lauscht Operation auf der Datenbank test
Sammlung test
. Es werden Dokumente ausgegeben, die das Feld {a: 1}
haben ('fullDocument.a': 1
) und ignoriert Aktualisierungen, Einfügungen anderer Werte von a
, oder irgendetwas ohne das Feld 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()