我正在研究Node.js + MongoDB应用程序。应用程序在MongoDB中插入一些记录。例如,让我们在下面简单记录:
{
"name": "Sachin",
"age" : 11,
"class": 5,
"percentage": 78,
"rating": 5
}
现在,当满足特定条件时,最终用户可以设置他们想要获取通知/警报的不同规则。例如,我们可以有一个规则:
1)规则1:如果“百分比”小于40
,则生成通知/警报为了实现这一点,我正在使用Replication和tailable游标。因此,无论何时在集合中添加新记录,我都会在tailable游标中获得记录。
coll = db.collection('oplog.rs');
options = {
tailable: true,
awaitdata: true,
numberOfRetries: -1
};
var qcond = {'o.data.percentage':{$gt:40}};
coll.find(qcond, options, function(err, cur) {
cur.each(function(err, doc) {
//Perform some operations on received document like
//adding it to other collection or generating alert
}); //cur.each
}); //find
到目前为止,一切正常。
现在问题在enduser想要在运行时添加另一个规则时开始说:
2)规则2:如果“评级”大于8
,则生成通知/警报现在我想在查询tailable游标时也考虑这个条件/规则。但是当前光标已经处于等待状态,这取决于仅根据Rule1给出的条件。
有没有办法动态更新查询条件,以便我也可以包含Rule2的条件?
我试过搜索但找不到实现此目的的方法。
有没有人有任何建议/指示来解决这种情况?
答案 0 :(得分:0)
没有。一旦光标在服务器上打开,您就无法对其进行修改。您需要终止光标并重新打开它以覆盖这两个条件,或者打开第二个光标以覆盖第二个条件。