[英]Mongodb: Dynamic query object in collection.find()
我正在开发Node.js + MongoDB应用程序。 该应用程序在MongoDB中插入一些记录。 例如让我们做下面的简单记录:
{
"name": "Sachin",
"age" : 11,
"class": 5,
"percentage": 78,
"rating": 5
}
现在,最终用户可以设置满足特定条件时要获取通知/警报的不同规则。 例如,我们可以有一个类似的规则:
1)Rule1:如果“百分比”小于40,则生成通知/警报
为了实现这一点,我使用了复制和可尾游标。 因此,无论何时在集合中添加新记录,我都会在可尾光标中获取一条记录。
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
到目前为止,一切正常。
现在,当最终用户想要在运行时添加另一个规则时,问题就开始了:
2)Rule2:如果“评级”大于8,则生成通知/警报
现在,我想在查询可尾游标时也考虑此条件/规则。 但是当前光标仅根据Rule1给出的条件已经处于等待状态。
有没有办法动态地更新查询条件,以便我也可以包括Rule2的条件?
我尝试搜索,但找不到实现此目的的方法。
有没有人有任何建议/指针来解决这种情况?
否。一旦游标在服务器上打开,便无法修改。 您需要终止游标并重新打开它以覆盖这两个条件,或者打开第二个游标以覆盖第二个条件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.