我正在尝试使用 DerbyJS、Racer 和 MongoDB 开发日志查看器。日志将由不同的源连续插入到 MongoDB 数据库中,我的日志查看器应该能够自动更新用户界面上的日志表。
我想知道是否有一种本地方式来监听 MongoDB 事件,例如:
- On update
- On delete
例如,它们类似于 Oracle DB 触发器。
您可以收听类似的事件insert
, update
,以及 mongodb 中使用名为的特殊集合的其他数据事件oplog
。您只需使用以下命令在数据库实例上启用复制即可mongod --master
or mongod --replicaSet
.
Oplog实际上是一个capped集合,mongodb内部使用它来实现复制。如果您使用主/从复制,您将通过名称找到该集合oplog.$main
,如果您使用副本集,它将被命名为oplog.rs
.
您可以在 oplog 上使用可尾游标,这应该可行。
Oplog 实际上就是日志本身。因此,您可能不需要出于记录目的单独存储它们。然而它的大小是固定的。这意味着当其完整的旧数据被删除时。
还要确保您正在调查local
数据库,这是维护 oplog 的地方
这是一个工作示例蒙戈斯金维基页面 https://github.com/kissjs/node-mongoskin/wiki/Using-tailable-cursors
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)