Mongoose计数返回的数组?

时间:2016-07-06 03:14:12

标签: javascript node.js mongodb mongoose

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

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

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

2 个答案:

答案 0 :(得分:3)

我认为会是这样的。

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

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

用.length:

来做
{{1}}

差异

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

答案 1 :(得分:0)

如果您不想使用。{

,请使用count功能
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实际返回实际数据,如果您有大量收集,这可能会非常低效。