gpt4 book ai didi

mongodb - $sum 有多个条件

转载 作者:行者123 更新时间:2023-12-03 19:57:16 29 4
gpt4 key购买 nike

我需要用 $sum 转换当前的 $group 以添加另一个条件:

Actually sum a field if a $eq return true.



现在,如果 $eq 返回 true 并且 $exists 返回 true,我想对字段求和。

我目前的小组是这样的:

"techsWorkQty": {
"$sum": {
"$cond": [
{ "$eq": [
"$works.TechnicianId", id
]},
1,
0
]
}
}

我在哪里可以添加以下子查询?

{
$works.percent:{$exists:true}
}

最佳答案

$exists 运算符只是一个“查询”运算符,只能用于 $match 聚合管道。为了将字段存在作为“逻辑”运算符进行测试,您需要使用 $ifNull . $and 运算符用于组合逻辑条件,也是与同名查询形式相对的逻辑运算符。逻辑运算符可用于 $project$group阶段:

"techsWorkQty": {
"$sum": {
"$cond": [
{ "$and": [
{ "$ifNull": [ "$works.percent", false ] },
{ "$eq": [ "$works.TechnicianId", id ] }
]},
1,
0
]
}
}
$ifNull返回该字段存在的字段值或该字段不存在时指定的替代值。在这种情况下,当前字段的“值”将评估为 true在 bool 上下文中。如果没有字段,则 false返回参数。 $and bool 形式需要两个逻辑表达式的计算结果为真,否则它本身返回 false这是由包装处理 $cond返回适当的值。

关于mongodb - $sum 有多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25061377/

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