2016-08-23 55 views
0

目前,我在使用請求模塊時對我的MongoDB實現查詢限制有一些麻煩。我確實有一些查詢,我將它們串入並附加到正在請求的URL。然而,設定的限制多少結果應顯示(如MongoDB的文檔解釋:https://mongodb.github.io/node-mongodb-native/markdown-docs/queries.html(見選項))是不是做的伎倆,或者至少我把它放錯了地方......Nodejs:如何爲使用請求模塊設置限制mongodb

//request all countries that are in the database and push them into a search array 

var query = JSON.stringify({'createdDate': {$gte: moment().subtract(5, 'days')}}); 

request(db_url + 'countries/?' + query, function(error, response, body) {} 

嘗試添加:

var querylimit = {"limit": 20} 

MongoDB的文檔給出了下面的例子:

var options = { 
"limit": 20, 
"skip": 10, 
"sort": "title" 
} 

collection.find({}, options).toArray(...); 

嘗試添加該querylimit查詢(查詢+,querylimit)的背後,已經在T他stringify,串化它本身,並試圖添加它等

我只是無法找到一種方法來限制使用請求模塊時的查詢。

任何幫助將不勝感激!

回答

0

你需要做一些事情,如以下內容:

var limit = 20; 
request(db_url + 'countries/?' + encodeURIComponent(query + "&limit=" + limit), function(error, response, body) {} 

您只是將查詢選項附加到URI的末尾。

+0

嘿喬, 好吧,我得到你想要做的。我的結果如下所示: mydomain/countries /?{%22createdDate%22:{%22 $ gte%22:%222016-08-18T19:37:33.120Z%22}}&limit = 20 這不是看起來正確,它不會導致預期的結果。所有查詢都被應用,除了限制..任何想法? – Jan173

+0

啊,對。嘗試在encodeURIComponent中包裝該添加項。我已經更新了回答 – Joe

+0

hm,仍然顯示出所有結果。查詢看起來像這樣: {「createdDate」:{「$ gte」:「2016-08-18T20:08:36.883Z」}}%26limit%3D20 – Jan173

0

歡迎來到StackOverflow @ Jan173

您無法聯繫新對象以字符串化對象。

相反,你可以把你的字符串使用JSON.parse反對,並添加您的查詢限制到同一對象

var queryObj = JSON.parse(query); // stringify query converted to object 
queryObj.limit = 20; // adding new propery limit to query object 
collection.find({}, queryObj); // fetch data with query object 

希望這會工作,快樂編碼:)

+0

嗨keviveks,我不知道如何不unstand你的答案。我嘗試構建一個查詢來從數據庫中獲取結果。使用上面發佈的代碼,我得到連接超時,因爲數組太長(500k對象)。我只需要抓取數據庫中的前20個,不會超時。 據我瞭解你,你認爲我已經從數據庫中獲得數組,然後嘗試切割它呢? – Jan173