mongoose计数返回数组的数量?

User.find({job:"developer",sick:1},callback); 

上面的查询给了我数组数的对象,但我只需要它的长度。 我试过User.count({job:"developer",sick:1},callback); 它不工作。

我知道我可以使用native .length原生函数,但我想用count()来优化我的查询。

我认为这将是这样的。

 var query = {job:"developer",sick:1}; User.count(query, function(err, count) { if(err) console.log(err); console.log(count); }); 

更好的方法(取决于是否要使用返回的文档)是使用.length。 但是,如果你只是为了速度而做这个,那么计数可能会更好。

用.length来做:

 User.find({job: 'developer'}, {sick: 1}, function(err, docs){ var length = docs.length; console.log(length); }) 

区别

.count()将只返回长度,而不进行完整的查询和加载文档,而.length将获取返回的数组并获取长度,这可能需要更长的时间,具体取决于数据库中存储的内容

只要使用count函数,如果你不想使用.length

 User.count({job:"developer",sick:1}, function(err, count) { console.log(count); }); 

一些用户(@ Jasch1)推荐使用这个:

 Song.find({job: 'developer'}, {sick: 1}, function(err, docs){ var length = docs.length; console.log(length); }) 

但是有一件事要记住.count返回数字,其中.find实际返回实际的数据,如果你有大的收集可能是非常低效的。