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()