我的收藏结构* “countcollection” *如下所示
{
"limitcount": 10000,
"currentcount": 100
}
我想纠正能够比较currentcount<($lt)limitcount
的mongoquery
或currentcount>($gt)limitcount
。
首先,我写了下面的mongo查询
db.countcollection.find({"currentcount":{$lt:{"limitcount"}}});
db.countcollection.find({"currentcount":{$gt:{"limitcount"}}});
但它无法执行。
请为此mongoquery提供您的意见。
提前感谢。
javaamtho。
答案 0 :(得分:5)
正如Bugai13所说,你无法对查询中的2个字段进行比较。
$ where的问题在于性能 - 因为这是一个将为每个文档执行的javascript函数,因此它必须扫描每个文档。
因此,您可以存储另一个字段(您可以将其编入索引)以及那些现有字段
e.g。
{
"limitcount": 10000,
"currentcount": 100,
"remainingcount" : 9900
}
所以你可以在新字段上查询:
db.countcollection.find({"remainingcount" : {$gt : 0}})
db.countcollection.find({"remainingcount" : {$lt : 0}})
答案 1 :(得分:3)
您无法使用简单查询执行您想要的操作(就像您在上面尝试过的那样)。 mongodb jira中存在此类错误,您可以为此投票。
我想你应该像这样使用javascript expression:
db.countcollection.find( { $where: "this.currentcount < this.limitcount" } );
希望得到这个帮助。
答案 2 :(得分:0)
$gt:{"limitcount"}}
没有任何意义,因为你正在与字符串limitcount进行比较。如果要与预定义变量进行比较,请使用变量,但在其周围加上引号。为什么选择这种奇怪的语法?