sql >> Databasteknik >  >> NoSQL >> MongoDB

Titta på skapande av dokument med MongoDB Streams

Du skulle behöva:

  1. Ange operationType: 'insert' . Eftersom du inte vill övervaka uppdateringar behöver du inte updateLookup .
  2. Skapa en riktig aggregationspipeline för ditt filter som inkluderar operationType .
  3. Aggregeringspipelinen filtrerar dokument som returneras av watch() . Ett exempel på utdata finns på sidan Ändra händelser .

watch() returnerar en ChangeStream . Den avfyras close , change , end och error evenemang. Se ChangeStream för mer information.

Här är ett fullständigt exempel på en changestream som lyssnar på insert operation på databasen test samling test . Den kommer att mata ut dokument som har fältet {a: 1} ('fullDocument.a': 1 ) och ignorerar uppdateringar, infogning av andra värden på a , eller något utan fältet 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()



  1. Uppdatera ett underdokument i mongodb?

  2. Bulk Upsert med MongoDB Java 3.0-drivrutin

  3. Skalbart sätt att logga sidförfrågningsdata från en PHP-applikation?

  4. MongoDb primär replika blir sekundär om sekundär misslyckas