MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Sehen Sie sich die Dokumentenerstellung mit MongoDB Streams an

Sie müssten:

  1. Geben Sie operationType: 'insert' an . Da Sie Updates nicht überwachen möchten, benötigen Sie updateLookup nicht .
  2. Erstellen Sie eine geeignete Aggregationspipeline für Ihren Filter, der operationType enthält .
  3. Die Aggregationspipeline filtert Dokumente, die von watch() zurückgegeben werden . Eine Beispielausgabe finden Sie auf der Seite "Ereignisse ändern" .

watch() gibt einen ChangeStream zurück . Es feuert close , change , end , und error Veranstaltungen. Siehe ChangeStream für weitere Details.

Hier ist ein vollständiges Beispiel für einen Changestream, der auf insert lauscht Operation auf der Datenbank test Sammlung test . Es werden Dokumente ausgegeben, die das Feld {a: 1} haben ('fullDocument.a': 1 ) und ignoriert Aktualisierungen, Einfügungen anderer Werte von a , oder irgendetwas ohne das Feld 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()