sql >> Databáze >  >> NoSQL >> MongoDB

Sledujte vytváření dokumentů pomocí MongoDB Streams

Budete potřebovat:

  1. Uveďte operationType: 'insert' . Protože nechcete sledovat aktualizace, nepotřebujete updateLookup .
  2. Vytvořte správný kanál agregace pro váš filtr, který obsahuje operationType .
  3. Agregační kanál filtruje dokumenty, které vrací funkce watch() . Příklad výstupu je na stránce Události změn .

watch() vrátí ChangeStream . Spustí se close , change , end a error Události. Viz ChangeStream pro více podrobností.

Zde je úplný příklad toku změn, který naslouchá na insert operace s databází test kolekce test . Vypíše dokumenty, které mají pole {a: 1} ('fullDocument.a': 1 ) a bude ignorovat aktualizace, vložení jiných hodnot a , nebo cokoliv bez pole 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. Jak mohu seřadit sbírku Meteor podle času vložení?

  2. Jaký je nejlepší způsob ukládání dat narození v MongoDB?

  3. Proč jsou názvy klíčů uloženy v dokumentu v MongodDB

  4. Mongo DB:Nelze vytvořit sharding cluster v Ubuntu