Je zou het volgende moeten doen:
- Specificeer
operationType: 'insert'
. Omdat je geen updates wilt volgen, heb jeupdateLookup
niet nodig . - Maak een goede aggregatiepijplijn
voor uw filter dat
operationType
. bevat . - De aggregatiepijplijn filtert documenten die worden geretourneerd door
watch()
. Een voorbeelduitvoer vindt u op de Change Events-pagina .
watch()
retourneert een ChangeStream
. Het vuurt close
. af , change
, end
, en error
evenementen. Zie ChangeStream
voor meer details.
Hier is een volledig voorbeeld van een changestream die luistert op insert
bewerking op de database test
verzameling test
. Het zal documenten uitvoeren met het veld {a: 1}
('fullDocument.a': 1
) en negeert updates, invoegingen van andere waarden van a
, of iets anders zonder het veld 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()