gpt4 book ai didi

javascript - Mongodb $sum $cond 有两个条件

转载 作者:可可西里 更新时间:2023-11-01 10:08:20 29 4
gpt4 key购买 nike

我有一个聚合查询,它返回为给定位置提交的评论的总和/总数(不是平均星级)。评论评分为 1 - 5 星。这个特定的查询将这些评论分为两类,“内部”和“谷歌”。

我有一个查询返回的结果几乎是我正在寻找的结果。但是,我需要为内部审查添加一个附加条件。我想确保内部评论“stars”值存在/不为 null 并且包含至少 1 的值。所以,我想添加类似这样的东西会起作用:

{ "stars": {$gte: 1} }

这是当前聚合查询:

[
{
$match: { createdAt: { $gte: fromDate, $lte: toDate } }
},
{
$lookup: {
from: 'branches',
localField: 'branch',
foreignField: '_id',
as: 'branch'
}
},
{ $unwind: '$branch' },
{
$match: { 'branch.org_id': branchId }
},
{
$group: {
_id: '$branch.name',
google: {
$sum: {
$cond: [{ $eq: ['$source', 'Google'] }, 1, 0]
}
},
internal: {
$sum: {
$cond: [ { $eq: ['$internal', true]}, 1, 0 ],
},
}
}
}
]

chop 架构:

  {
branchId: { type: String, required: true },
branch: { type: Schema.Types.ObjectId, ref: 'branches' },
wouldRecommend: { type: String, default: '' }, // RECOMMENDATION ONLY
stars: { type: Number, default: 0 }, // IF 1 - 5 DOCUMENT IS A REVIEW
comment: { type: String, default: '' },
internal: { type: Boolean, default: true },
source: { type: String, required: true },
},
{ timestamps: true }

我需要确保我没有将“wouldRecommend”建议计入内部评论的总和。一定要确定某件事是否是评论,它将具有 1 星或更多星的星级。推荐的星级值为 0。

如何添加确保内部“$stars”值 >= 1(大于或等于 1)的条件?

使用 Ashh 的回答,我能够形成这个查询:

[
{
$lookup: {
from: 'branches',
localField: 'branch',
foreignField: '_id',
as: 'branch'
}
},
{ $unwind: '$branch' },
{
$match: {
'branch.org_id': branchId
}
},
{
$group: {
_id: '$branch.name',
google: {
$sum: {
$cond: [{ $eq: ['$source', 'Google'] }, 1, 0]
}
},
internal: {
$sum: {
$cond: [
{
$and: [{ $gte: ['$stars', 1] }, { $eq: ['$internal', true] }]
},
1,
0
]
}
}
}
}
];

最佳答案

您可以使用 $and$cond运算符(operator)

{ "$group": {
"_id": "$branch.name",
"google": { "$sum": { "$cond": [{ "$eq": ["$source", "Google"] }, 1, 0] }},
"internal": { "$sum": { "$cond": [{ "$eq": ["$internal", true] }, 1, 0 ] }},
"rating": {
"$sum": {
"$cond": [
{
"$and": [
{ "$gte": ["$stars", 1] },
{ "$eq": ["$internal", true] }
]
},
1,
0
],
}
}
}}

关于javascript - Mongodb $sum $cond 有两个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56924668/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com