我正在尝试使用 DerbyJS、Racer 和 MongoDB 开发日志查看器。日志将由不同的来源连续插入到 MongoDB 数据库中,我的日志查看器应该能够自动更新用户界面上的日志表。
我想知道是否有监听 MongoDB 事件的本机方式,例如:
- On update
- On delete
例如,这些将类似于 Oracle DB 触发器。
您可以使用名为insert
. 您只需要使用或在您的数据库实例上启用复制。update
oplog
mongod --master
mongod --replicaSet
Oplog 实际上是一个 capped 集合,mongodb 内部使用它来实现复制。如果您使用主/从复制,您将找到名称为 的集合oplog.$main
,如果您使用的是副本集,它将被命名为oplog.rs
。
您可以在 oplog 上使用可尾光标,这应该可以工作。
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
不,https://jira.mongodb.org/browse/SERVER-124它必须是应用程序端。
我不确定 node.js 是否在其驱动程序中内置了 MongoDB 触发器,但很可能没有,因此您需要自己编写代码。