Du skal:
- Angiv
operationType: 'insert'. Da du ikke ønsker at overvåge opdateringer, behøver du ikkeupdateLookup. - Opret en ordentlig aggregeringspipeline
for dit filter, der inkluderer
operationType. - Aggregeringspipelinen filtrerer dokumenter, der returneres af
watch(). Et eksempel på output er på Skift begivenheder-siden .
watch() returnerer en ChangeStream . Den udløses close , change , end , og error begivenheder. Se ChangeStream
for flere detaljer.
Her er et fuldstændigt eksempel på en changestream, der lytter på insert operation på databasen test samling test . Det vil udlæse dokumenter, der har feltet {a: 1} ('fullDocument.a': 1 ) og vil ignorere opdateringer, indsættelser af andre værdier af a , eller noget uden feltet 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()