【问题标题】:Nodejs: How to set limit when using Request module for mongodbNodejs:如何在为mongodb使用请求模块时设置限制
【发布时间】:2016-12-30 17:00:33
【问题描述】:

目前,在使用请求模块时,我在为我的 mongodb 实现查询限制时遇到了一些麻烦。我确实有一些查询,我将其字符串化并附加到正在请求的 URL。但是,设置应显示多少结果的限制(如 mongodb 文档中所述:https://mongodb.github.io/node-mongodb-native/markdown-docs/queries.html(参见选项))并没有起到作用,或者至少我把它放在错误的地方......

//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(+query,querylimit),已经在stringify中,对其本身进行字符串化并尝试添加等等。

我只是在使用请求模块时找不到限制查询的方法。

任何帮助将不胜感激!

【问题讨论】:

    标签: node.js mongodb


    【解决方案1】:

    您需要执行以下操作:

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

    您只是将查询选项附加到 URI 的末尾。

    【讨论】:

    • 嘿乔,好的,我明白你想要做什么。然而,我的结果如下所示: mydomain/countries/?{%22createdDate%22:{%22$gte%22:%222016-08-18T19:37:33.120Z%22}}&limit=20 这看起来不正确并且它不会导致预期的结果。除限制外,所有查询均已应用。有什么想法吗?
    • 啊,对。尝试将添加的内容包装在 encodeURIComponent 中。我已经更新了答案
    • 嗯,仍然显示所有结果。查询现在看起来像这样: {"createdDate":{"$gte":"2016-08-18T20:08:36.883Z"}}%26limit%3D20
    • encodeURIComponent 在查询和选项上。我认为格式混淆了请求模块。
    【解决方案2】:

    欢迎来到 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
    

    希望这会奏效,快乐编码:)

    【讨论】:

    • 嗨 keviveks,我不知何故不明白你的回答。我尝试构建一个查询以从数据库中获取结果。使用我在上面发布的代码,我得到一个连接超时,因为数组太长(500k 个对象)。我只需要从数据库中获取前 20 个就不会超时。据我了解,您假设我已经从数据库中获取了数组并尝试将其剪切?
    猜你喜欢
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 2012-09-17
    • 2020-07-03
    • 1970-01-01
    相关资源
    最近更新 更多