我觉得通过使用mongo的服务器端javascript功能,mongoDB也可以用作事件触发器系统。
例如
db.system.js.save(
{
_id : "timer",
value : function timer(interval,times,fun){ var s=new Date(); var e=new Date(); var cnt=0; while(cnt<times){ print("audit: "+cnt); eval(fun()); cnt++; s=new Date(); while(e-s < interval){e=new Date();}}};
}
db.testcol.save({a:timer(1000,3,function(){print(Date() + "Message");})})
输出=========
audit: 0 Sun Mar 03 2013 16:29:46 GMT+0530 (IST)Message audit: 1 Sun Mar 03 2013 16:29:47 GMT+0530 (IST)Message audit: 2 Sun Mar 03 2013 16:29:48 GMT+0530 (IST)Message
没有探索这种可能性,但这种想法带来了以下几点 1)触发事件系统,特定集合充当延迟命令队列。 2)延迟/定时持久性
还有更多用途吗?
答案 0 :(得分:1)
不,MongoDB没有触发器:https://jira.mongodb.org/browse/SERVER-124
你触发某些东西的方式并不是一种健康的方法,甚至不确定输出到集合本身的内容,可能是函数的对象或空值。
此外,我相信这只会在控制台中运行,而不会在客户端程序中运行,除非您使用eval
(可能,甚至不确定),而且,我甚至不需要解释原因这很糟糕。
您可以使用活动记录(或类似的东西)来完成此任务。