2015-06-23 123 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