我试图找到一种性能更好的解决方案,也许您不从集合中获取整个字符串数组,而是只返回计数。基本上,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"
]
答案 0 :(得分:1)
尝试以下方法: User.aggregate([{$ match:{_id:req.params.id}},{$ project:{blacklistGroupLength:{$ size:'$ blacklistGroup'}}}])
答案 1 :(得分:0)
您的blacklistGroup是否具有类似于-blacklistGroup [“ name1”,“ name2”]]的列表? 希望您能看到详细的模型视图。
答案 2 :(得分:0)
我从MongoDB文档中发现了一些可以帮助您的东西。这是link