我如何限制退货数量?

myModel.find({}, function(err, items){ console.log(items.length); // big number }); 

如何限制返回的项目只能插入最近的10个项目?

在最新的mongoose中(3.8.1在编写本文时),你做了两件事:(1)必须将单个parameter passing给sort(),它必须是一个约束数组或者只有一个约束, )execFind()不见了,用exec()代替。 因此,用mongoose3.8.1你可以这样做:

 var q = models.Post.find({published: true}).sort({'date': -1}).limit(20); q.exec(function(err, posts) { // `posts` will be of length 20 }); 

或者你可以像这样链接在一起:

 models.Post .find({published: true}) .sort({'date': -1}) .limit(20) .exec(function(err, posts) { // `posts` will be of length 20 }); 

像这样,使用.limit():

 var q = models.Post.find({published: true}).sort('date', -1).limit(20); q.execFind(function(err, posts) { // `posts` will be of length 20 }); 

出于某种原因,我无法得到这个build议的答案,但我发现另一种变化,使用select,这对我有效:

 models.Post.find().sort('-date').limit(10).select('published').exec(function(e, data){ ... }); 

api可能已经改变了吗? 我正在使用版本3.8.19

 models.Post.find({published: true},{date: 1}, {sort{'date': -1}, limit: 20}, function(err, posts) { // `posts` with sorted length of 20 }); 

…另外确保使用:

 mongoose.Promise = Promise; 

这为猫本身的承诺奠定了mongoose的承诺。 没有这个补充,我得到了:

DeprecationWarning:Mongoose:mpromise(mongoose的默认承诺库)已被弃用,插入自己的承诺库,而不是: http ://mongoosejs.com/docs/promises.html