Mongoose / node.js如何查询范围[20到30之间的元素]

时间:2015-03-18 15:42:06

标签: node.js mongodb mongoose

我的mongodb表中有500个元素,我想在100个第一个元素之后仅选择100个元素。为此,请尝试使用.slice等。但此查询无法正常工作。我正在使用mongoose和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);           
});

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

1 个答案:

答案 0 :(得分:3)

您可以使用 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()方法通常很昂贵,因为它需要   服务器从集合或索引的开头走到get   开始返回结果之前的偏移或跳过位置。如   offset(例如上面的pageNumber)增加,cursor.skip()将成为   更慢,更密集的CPU。使用更大的集合,cursor.skip()   可能会成为IO界限。