node.js - NodeJS - MongoDB 触发器

标签 node.js mongodb derbyjs

我正在尝试使用 DerbyJS、Racer 和 MongoDB 开发日志查看器。日志将通过不同的来源不断插入到 MongoDB 数据库中,我的日志查看器应该能够自动更新用户界面上的日志表。

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

 - On update
 - On delete

这些类似于 Oracle 数据库触发器等。

最佳答案

您可以使用名为 oplog 的特殊集合来监听 mongodb 中的 insertupdate 和其他数据事件。您只需使用 mongod --mastermongod --replicaSet 在您的数据库实例上启用复制。

Oplog实际上是一个capped collection,mongodb内部使用它来实现replication。如果您使用的是主/从复制,您会发现名为 oplog.$main 的集合,如果您使用的是副本集,它将被命名为 oplog.rs

您可以在 oplog 上使用 tailable 游标,这应该可行。

Oplog 实际上就是日志本身。因此,您可能不需要为了记录目的而单独存储它们。但是它的大小是固定的。意思是当其完整的旧数据被删除时。

同时确保您正在查看本地数据库,这是维护操作日志的地方

这是来自 mongoskin wiki page 的工作示例

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

关于node.js - NodeJS - MongoDB 触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11817149/

相关文章:

node.js - 如何更新 mongodb 上其他数组中数组的值?

node.js - 将 Node.js Docker 从本地(Apple M1)推送到 Heroku 时,继续遇到相同的部署错误(Exec Format Error)

javascript - 如何解析包含 UTF-8 字符的 Content-Disposition header

mongodb - 与 vpc 对等的 atlas 集群未将 docker swarm 上的服务列入白名单

javascript - 使 DerbyJS 只重新渲染某些 DOM Node

javascript - 如何配置我的 Derby.js 应用程序以使用 LESS CSS 引擎?

javascript - 如何在vscode的外部文件中获取express中间件的智能感知?

java - 如何在 Java 中使用 Mongodb 连接池

mongodb - Mongoengine 地理空间搜索