NodeJS - MongoDB触发器

F. *_*ago 3 mongodb node.js derbyjs

我正在尝试使用DerbyJS,Racer和MongoDB开发日志查看器.日志将由不同的源连续插入MongoDB数据库,我的日志查看器应该能够自动更新用户界面上的日志表.

我想知道是否有一种本地方式来监听MongoDB事件,例如:

 - On update
 - On delete
Run Code Online (Sandbox Code Playgroud)

这些类似于例如Oracle DB触发器.

Juz*_*Ali 9

你可以听喜欢的活动insert,update使用命名的特殊收藏,并在MongoDB的其他数据事件oplog.您只需要使用mongod --master或在数据库实例上启用复制mongod --replicaSet.

Oplog实际上是一个上限集合,mongodb在内部使用它来实现复制.如果您正在使用主/从复制,您将找到名称的集合oplog.$main,如果您使用副本集,它将被命名oplog.rs.

您可以在oplog上使用tailable游标,这应该有效.

实际上,Oplog是自己记录的.因此,您可能不需要单独存储它们以用于记录目的.但它的大小是固定的.在删除完整的旧数据时的含义.

还要确保您正在查看local数据库,即维护oplog的地方

这是mongoskin wiki页面的一个工作示例

skin = require "mongoskin"
db = skin.db "localhost:27017/local"

#//Cursor on oplog (a capped collection) which maintains a history for replication
#//oplog can be used only when replication is enabled
#//Use oplog.rs instead of oplog.$main if you are using replica set

oplog = db.collection "oplog.$main"
cursor = oplog.find({'ns': "icanvc.projects"},{tailable: yes, awaitData: yes})

#//Using cursor.nextObject will be slow
cursor.each (err, log)->
    console.error err if err
    console.log log if not err
Run Code Online (Sandbox Code Playgroud)