Mongodb:collection.find()中的动态查询对象

时间:2015-04-04 19:37:13

标签: node.js mongodb

我正在研究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的条件?

我试过搜索但找不到实现此目的的方法。

有没有人有任何建议/指示来解决这种情况?

1 个答案:

答案 0 :(得分:0)

没有。一旦光标在服务器上打开,您就无法对其进行修改。您需要终止光标并重新打开它以覆盖这两个条件,或者打开第二个光标以覆盖第二个条件。