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)