Node.js MongoDB驱动程序游标不能正确计数

时间:2017-06-27 10:08:27

标签: node.js mongodb count

我在使用MongoDB Node.js本机驱动程序版本2.2.29时遇到问题。

这是我正在运行的代码:

let cursor = db.collection( 'log' )
               .find({timestamp: { '$lte': 1498556839 }})
               .sort( { create_date_ttl: -1 } )
               .limit( 3 );

如果我现在运行cursor.count()并处理Promise,我看到计数给了我56条记录而不是3条(指定的限制)。

cursor.count().then( (count) => {
   // count here is 56
});

但是如果我使用回调运行cursor.count( function (err, count) {}),则计数只有3条记录。

cursor.count( function (err, count) {
  // count here is 3 according to the limit specified.
});

是否有人有同样的问题或有人可以解释我这是怎么回事?也许我错过了一些东西,但根据官方documentation,似乎没问题。

提前致谢。

1 个答案:

答案 0 :(得分:5)

将第一个参数(applySkipLimit)设置为true,然后skiplimit将被应用。

cursor.count(true).then( (count) => {
   // count here will be 3
});

似乎文档是未澄清的,因为有人写道,true应该是默认值。正如评论中所提到的,这是回调的行为。