2015-06-23 56 views
0

我有以下的Node.js代码蒙戈互动:db.collection.find()被忽略的查询条件

var lowrange = 1; 
var collection = db.get('postings'); 
collection.find({},{postid: { $gt: lowrange }, limit: 10, sort: {_id: -1}},function(e,docs){ 
    res.json(docs); 
}); 

我使用这个通过JSON列出集合“帖子”的内容响应。限制:10和分类标准按预期工作。 postid:{$ gt:lowrange}部分似乎被忽略。 换句话说,我得到的所有记录,即使是那些低于VAR lowrange。为什么是这样?

编辑:

然后什么是正确的语法?这不会产生任何结果(我向你保证有一个帖子ID大于1文件):

collection.find({postid: { $gt: 1 }}, function(e,docs){ 
    res.json(docs); 
}); 

以及如何使用限制/排序,当你有一个功能找到的PARAM?以下错误:

collection.find({postid: { $gt: 1 }}, function(e,docs){ 
    res.json(docs); 
}).limit(10).sort({_id: -1}); 
+1

如果我没有错,你没有指定任何条件,你写的发现({})的第一个对象decidess,得到记录。第二个对象告诉哪些字段给.. –

+0

正如@Modi提到..你已经给出了find({})这样的条件,它会匹配所有的文档。 – Aman

回答

3

find的第一个参数是查询文档。你的是空的({})。

实际上,我不确定您在哪里看到过该语法,其中limitsort作为字段名称。

Read Operations Overview

+0

奇怪的是,这种语法的作品。我已阅读您提供的链接 - 谢谢。然而,它似乎并不像我能找到的(),如果我有发现PARAMS内部功能后的.sort()和其他修饰符钉。 – ZeroOverride

+0

如果您发现链接到你的语法,我会很感激你在这里添加注释。我自己对MongoDB有点新鲜。也许它是特定于Node.js? –

+0

因此,我发现这个语法的几个例子:http://code.runnable.com/UW3vaGTkq498AACC/query-for-records-in-mongodb-using-mongodb-native-for-node-js和http:// stackoverflow.com/questions/9970443/on-mongodb-how-can-i-limit-the-query-when-my-callback-is-inside-find。第二个似乎意味着你可以创建第三个参数 - 我还没有看到其他的东西。无论如何,即使我把它放在第一个参数中,它仍然不会听我的$ gt查询。 – ZeroOverride