sql >> Base de Datos >  >> NoSQL >> MongoDB

Vea la creación de documentos con MongoDB Streams

Necesitarías:

  1. Especifique operationType: 'insert' . Como no desea monitorear las actualizaciones, no necesita updateLookup .
  2. Cree una tubería de agregación adecuada para su filtro que incluye operationType .
  3. La canalización de agregación filtra los documentos que devuelve watch() . Un resultado de ejemplo se encuentra en la página Change Events .

watch() devuelve un ChangeStream . Dispara close , change , end y error eventos. Consulte ChangeStream para más detalles.

Aquí hay un ejemplo completo de un flujo de cambios que escucha en insert operación en la base de datos test colección test . Emitirá documentos que tengan el campo {a: 1} ('fullDocument.a': 1 ) e ignorará actualizaciones, inserciones de otros valores de a , o cualquier cosa sin el 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()