【发布时间】:2021-10-26 03:11:28
【问题描述】:
我有一个用户架构,其中包含一个名为 amputationInfo 的值:
amputationInfo: [
{
type: String,
},
],
以下是数据库中的示例:
amputationInfo: [
"Double Symes/Boyd",
"Single Above-Elbow"
]
我有一个允许用户发表评论的评论模式,它包含对留下评论的用户的引用:
user: {
type: mongoose.Schema.ObjectId,
ref: 'User',
require: [true, 'Each review must have an associated user!'],
},
当用户留下评论时,我想创建一个聚合函数来查找评论中的用户,找到他们的 amputationInfo,遍历数组并将包含 "Double Symes/Boyd", "Single Above-Elbow" 的用户总数相加
所以如果我们有 3 个用户,他们的 amputationInfo 如下:
amputationInfo: [
"Double Symes/Boyd",
"Single Above-Elbow"
]
amputationInfo: [
"Single Above-Elbow"
]
amputationInfo: []
聚合函数的返回值将计算每个项并将相应的值加一,如下所示:
[
{
doubleSymesBoyd: 1,
singleAboveElbow: 2
}
]
这是我尝试过的,但我对 mongoDB 的了解还不够,无法解决问题:
[
{
'$match': {
'prosthetistID': new ObjectId('6126ca6148f34c00189f86f5')
}
}, {
'$lookup': {
'from': 'users',
'localField': 'user',
'foreignField': '_id',
'as': 'userInfo'
}
}, {
'$unwind': {
'path': '$userInfo'
}
}
]
在 $unwind 之后,生成的对象有一个 userInfo 键,其中包含嵌套的 amputationInfo 数组:
【问题讨论】:
标签: arrays mongodb loops mongoose