【发布时间】:2021-10-10 17:38:38
【问题描述】:
我有以下带有 ObjectId 数组的架构:
const userSchema = new Schema({
...
article: [{
type: mongoose.Schema.Types.ObjectId,
}],
...
},
我将计算上面示例中的数组元素,结果应该是 10。
我尝试了以下方法,但这对我不起作用。 req.query.id 是来自用户的 _id,将使用匹配的文章数组过滤特定用户。
const userData = User.aggregate(
[
{
$match: {_id: id}
},
{
$project: {article: {$size: '$article'}}
},
]
)
console.log(res.json(userData));
console.log(article.length) 目前给我 0。我该怎么做?聚合函数是正确的选择还是其他更好的方法来计算数组的元素?
【问题讨论】:
-
也许您的
$match舞台正在返回任何元素。尝试将req.query._id解析为ObjectId -
感谢您的评论。我已经更新了我的答案,并尝试了一个带有 $project 参数的新聚合函数。你知道如何显示我的 $size 变量吗?
-
await User.aggregate(...) -
是的,谢谢你们。现在它正在运行,这对我帮助很大。谢谢!
标签: javascript arrays mongodb mongoose