MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Assista à criação de documentos com o MongoDB Streams


Você precisaria:
  1. Especifique operationType: 'insert' . Como você não deseja monitorar as atualizações, não precisa de updateLookup .
  2. Crie um pipeline de agregação adequado para seu filtro que inclui operationType .
  3. O pipeline de agregação filtra os documentos retornados por watch() . Um exemplo de saída está na página Alterar eventos .

watch() retorna um ChangeStream . Ele dispara close , change , end e error eventos. Consulte ChangeStream para mais detalhes.

Aqui está um exemplo completo de um fluxo de mudança que escuta em insert operação no banco de dados test coleção test . Ele produzirá documentos que tenham o campo {a: 1} ('fullDocument.a': 1 ) e ignorará atualizações, inserções de outros valores de a , ou qualquer coisa sem o 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()