MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Guarda la creazione di documenti con MongoDB Streams

Dovresti:

  1. Specifica operationType: 'insert' . Dal momento che non vuoi monitorare gli aggiornamenti, non hai bisogno di updateLookup .
  2. Crea una corretta pipeline di aggregazione per il tuo filtro che include operationType .
  3. 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()