【问题标题】:Mongoose/node.js How can i query in range [ elements between 20 and 30 ]Mongoose/node.js 我如何在范围内查询 [20 到 30 之间的元素]
【发布时间】:2016-01-19 14:33:27
【问题描述】:

我的 mongodb 表中有 500 个元素,例如,我想选择 100 个第一个元素之后的 100 个元素。为此,请尝试使用.slice 等。但此查询无法正常工作。我正在使用猫鼬和 node.js:

var query2 = JenkinsTestModel.find();
query2.where('jobname date').slice([-100 /*skip*/, 100 /*limit*/]) //i tried several different ways here
query2.exec(function (err, job) {
     if (err) throw err;
     console.log(job);           
});

此查询返回所有元素。我该如何解决上述问题?

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    您可以为此使用 skip()limit() 方法:

    var query2 = JenkinsTestModel.find()
        .where('jobname date')
        .skip(100)                          
        .limit(100)   
        .exec(function (err, job) {
             if (err) throw err;
             console.log(job);           
        });
    

    注意:来自docs

    cursor.skip() 方法通常很昂贵,因为它需要 服务器从集合或索引的开头走去获取 开始返回结果之前的偏移或跳过位置。作为 偏移量(例如上面的 pageNumber)增加,cursor.skip() 将变为 速度更慢,CPU 密集度更高。对于更大的集合,cursor.skip() 可能成为 IO 绑定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-09
      • 1970-01-01
      • 1970-01-01
      • 2021-01-02
      • 1970-01-01
      • 1970-01-01
      • 2021-04-07
      相关资源
      最近更新 更多