MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Regardez la création de documents avec MongoDB Streams

Vous devrez :

  1. Spécifiez operationType: 'insert' . Puisque vous ne voulez pas surveiller les mises à jour, vous n'avez pas besoin de updateLookup .
  2. Créer un bon pipeline d'agrégation pour votre filtre qui inclut operationType .
  3. 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()