Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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/0/asp.net-mvc/15.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
Node.js Mongoose对一个文档中的字符串数组进行计数_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js Mongoose对一个文档中的字符串数组进行计数

Node.js Mongoose对一个文档中的字符串数组进行计数,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正试图找到一个性能更好的解决方案,可能您不从集合中获取整个字符串数组,而只是返回计数。基本上是一个用户集合中字符串数组的countDocuments等价物 我有一个可行的解决方案,但是如果这个列表很长,那么它的性能就不会那么好 User.findById( { _id: req.params.id }, { _id: 0 }) .select("blacklistGroup").then

我正试图找到一个性能更好的解决方案,可能您不从集合中获取整个字符串数组,而只是返回计数。基本上是一个用户集合中字符串数组的
countDocuments
等价物

我有一个可行的解决方案,但是如果这个列表很长,那么它的性能就不会那么好

                  User.findById(
                  { _id: req.params.id }, { _id: 0 })
                  .select("blacklistGroup").then((result) => {
                    let output = JSON.parse(JSON.stringify(result.blacklistGroup));
                    console.log(output.length + " + people");
                  });
我希望得到一个更有效的解决方案示例,它与
countDocuments
更为一致,但不适用于字符串数组。我感谢你的帮助

以下是blacklistGroup的模型定义

  blacklistGroup: [String]
收集示例

  "blacklistGroup": [
    "5e98e8e785e69146f841d239",
    "5e9867ff5e72550988820dd3",
    "5e98e90d85e69146f841d23a",
    "5e98c950f4fb3f63b4634e30",
    "5e99fcf3a506cf570056898b",
    "5e99fd15a506cf570056898c",
    "5e99fd3aa506cf570056898d",
    "5e99fd64a506cf570056898e",
    "5e99fda5a506cf570056898f"
  ]


您的blacklistGroup是否具有类似--blacklistGroup[“名称1”、“名称2”]的列表? 非常感谢您提供详细的模型视图。

试试这个:

User.aggregate([
{
$match:{u id:req.params.id}
}, 
{
$project:{blacklistGroupLength:{$size:'$blacklistGroup'}}
}
])

我从MongoDB文档中找到了一些可能对您有所帮助的东西。以下是

我更新了我的问题以添加更多信息。希望帮助我添加了这个,但是
console.log(res)
输出
[]
。应该是10,我让它工作了,但必须添加
mongoose.Types.ObjectId(req.params.id)