gpt4 book ai didi

node.js - NodeJS - MongoDB 触发器

转载 作者:可可西里 更新时间:2023-11-01 09:18:26 26 4
gpt4 key购买 nike

我正在尝试使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com