sql >> Database teknologi >  >> NoSQL >> MongoDB

Se oprettelse af dokumenter med MongoDB Streams

Du skal:

  1. Angiv operationType: 'insert' . Da du ikke ønsker at overvåge opdateringer, behøver du ikke updateLookup .
  2. Opret en ordentlig aggregeringspipeline for dit filter, der inkluderer operationType .
  3. Aggregeringspipelinen filtrerer dokumenter, der returneres af watch() . Et eksempel på output er på Skift begivenheder-siden .

watch() returnerer en ChangeStream . Den udløses close , change , end , og error begivenheder. Se ChangeStream for flere detaljer.

Her er et fuldstændigt eksempel på en changestream, der lytter på insert operation på databasen test samling test . Det vil udlæse dokumenter, der har feltet {a: 1} ('fullDocument.a': 1 ) og vil ignorere opdateringer, indsættelser af andre værdier af a , eller noget uden feltet 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. UUID forkortelse

  2. Opretter du Mongoose-skemaer med eller uden 'nyt' søgeord?

  3. indlejrede forespørgsler i pymongo ved hjælp af collection.find()

  4. MongoDB oplog har poster med prikker i nøglenavne, som ikke kan forespørges efter, ofte