我在使用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,似乎没问题。
提前致谢。
答案 0 :(得分:5)
将第一个参数(applySkipLimit
)设置为true,然后skip
和limit
将被应用。
cursor.count(true).then( (count) => {
// count here will be 3
});
似乎文档是未澄清的,因为有人写道,true应该是默认值。正如评论中所提到的,这是回调的行为。