【发布时间】:2019-05-15 01:54:10
【问题描述】:
我正在尝试计算两个单独字段为真的次数。我有两个值“clickedWouldRecommend”和“clickedWouldNotRecommend”。这些值也默认为 FALSE。在界面中单击按钮时,它们被设置为 TRUE。我正在尝试查看每个 branch.name 有多少 clickedWouldRecommend = true 和多少 clickedWouldNotRecommend = true。
db.appointments.aggregate([
{
$match: {
$and: [
{
'branch.org_id': '100000'
},
{ "analytics.clickedWouldRecommend": true },
// Add OR statement to include analytics.clickedWouldNotRecommend = true?
]
}
},
{
$group: {
_id: '$branch.name',
wouldRecommend: { $sum: 1 }
}
}
])
这提供了类似的结果:
{
"_id": [ 'Clinic Name' ],
"wouldRecommend": 115.0
}
我需要修改查询以查找 analytics.clickedWouldNotRecommend 设置为 true 的情况。我正在尝试获得与此类似的输出(如果可能,还要注意从 _id 中删除数组):
{
"name": 'Clinic Name'
"wouldRecommend": 115,
"wouldNotRecommend": 10
},
{
"name": 'Second Clinic Name'
"wouldRecommend": 200,
"wouldNotRecommend": 12
}
这是截断的模型/架构:
{
branch: [
{
name: {
type: String,
required: true
},
clinic_id: {
type: String,
required: true
},
org_id: {
type: String
}
}
],
analytics: {
clickedWouldRecommend: {
type: Boolean,
default: false
},
clickedWouldNotRecommend: {
type: Boolean,
default: false
}
},
date: {
type: Date,
default: Date.now
}
};
【问题讨论】:
-
为什么你不做两个简单的计数查询来获得不同的计数?这样做
_id: '$branch.name',的目的是什么?我不明白这个问题。 -
@AnthonyWinzlet - 每个组织都有不同的分支。我需要找出推荐的总数,并且不会为特定组织下的每个分支推荐。例如,我指定了一个 org_id,并且将在一个组织下分配各种 branch_id。因此,我将获得每个分支的输出及其相应的 willRecommend 和 willNotRecommend 总数。
标签: node.js mongodb mongoose mongodb-query aggregation-framework