Dovresti:
- Specifica
operationType: 'insert'
. Dal momento che non vuoi monitorare gli aggiornamenti, non hai bisogno diupdateLookup
. - Crea una corretta pipeline di aggregazione
per il tuo filtro che include
operationType
. - La pipeline di aggregazione filtra i documenti restituiti da
watch()
. Un esempio di output si trova nella pagina Modifica eventi .
watch()
restituisce un ChangeStream
. Spara close
, change
, end
e error
eventi. Vedi ChangeStream
per maggiori dettagli.
Ecco un esempio completo di changestream in ascolto su insert
operazione sul database test
raccolta test
. Produrrà documenti che hanno il campo {a: 1}
('fullDocument.a': 1
) e ignorerà gli aggiornamenti, gli inserimenti di altri valori di a
o qualsiasi cosa senza il campo 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()