Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回数组的Mongoose计数数?_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript 返回数组的Mongoose计数数?

Javascript 返回数组的Mongoose计数数?,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,上面的查询给了我对象的数组数,但我只需要它的长度。我尝试了User.count({job:“developer”,sick:1},回调)它不工作 我知道我可以使用本机.length本机函数,但我想使用count()优化我的查询 如果不想使用.length,只需使用函数即可 User.find({job:"developer",sick:1},callback); 一些用户(@Jasch1)建议使用此选项: User.count({job:"developer",sick:1}, functio

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

我知道我可以使用本机.length本机函数,但我想使用count()优化我的查询

如果不想使用.length,只需使用函数即可

User.find({job:"developer",sick:1},callback);
一些用户(@Jasch1)建议使用此选项:

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

但有一点要记住,.count返回数字where.find实际上返回实际数据,如果收集量很大,这可能会非常低效。

我想应该是这样的

Song.find({job: 'developer'}, {sick: 1}, function(err, docs){
    var length = docs.length;
    console.log(length);
})
更好的方法(取决于是否要使用返回的文档)是使用.length。然而,如果你只是为了速度而这样做,那么计数可能会更好

要使用。长度:

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


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

您应该先阅读Mongoose Doc(),然后再进行此声明。我知道您的方法会起作用,这并不是最好的方法,因为mongoose async framework和您的长度都是空的。使用javascript本机函数的.length有什么不同?我建议使用它的本机函数,因为它允许您处理数据,而不仅仅返回长度。这将是缓慢的,但取决于你想做什么,它可能会更好。我在回答中添加了一些东西来解释这个问题difference@Rachel好的,这样行吗?查找({job:“developer”,sick:1},函数(err,items){console.log(items)});
User.find({job: 'developer'}, {sick: 1}, function(err, docs){
    var length = docs.length;
    console.log(length);
})