Vous devrez :
- Spécifiez
operationType: 'insert'
. Puisque vous ne voulez pas surveiller les mises à jour, vous n'avez pas besoin deupdateLookup
. - Créer un bon pipeline d'agrégation
pour votre filtre qui inclut
operationType
. - Le pipeline d'agrégation filtre les documents renvoyés par
watch()
. Un exemple de sortie se trouve dans la page Modifier les événements .
watch()
renvoie un ChangeStream
. Il déclenche close
, change
, end
, et error
événements. Voir ChangeStream
pour plus de détails.
Voici un exemple complet d'un changestream qui écoute sur insert
opération sur la base test
collecte test
. Il affichera les documents contenant le champ {a: 1}
('fullDocument.a': 1
) et ignorera les mises à jour, les insertions d'autres valeurs de a
, ou quoi que ce soit sans le champ 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()