gpt4 book ai didi

python - MongoDB 条件(如果存在则求和,否则为零)

转载 作者:行者123 更新时间:2023-12-04 07:44:09 42 4
gpt4 key购买 nike

我正在尝试对可能不存在该字段的聚合管道中的一个字段求​​和。否则,返回应该为零。到目前为止,这是我的代码:

admits = [
{'$match': {'meta.State': item['state'],'meta.County': item['county'], 'meta.first_seen': date}},
{'$group': {'_id': {'item': '$item'}, 'admissions': {'$ifNull': [{'$sum': 1}, 0]}}},
]
这不起作用,因为调用 $sum$ifNull引发一元运算符异常:
pymongo.errors.OperationFailure: The $ifNull accumulator is a unary operator

最佳答案

pymongo.errors.OperationFailure: The $ifNull accumulator is a unary operator

<accumulator>运算符必须是以下累加器运算符之一: accumulator-operator , 和 $ifNull运营商不是其中之一, $sum如果要求和,运算符必须在 root 中,
$ifNull的用法是:

Evaluates an expression and returns the value of the expression if the expression evaluates to a non-null value. If the expression evaluates to a null value, including instances of undefined values or missing fields, returns the value of the replacement expression.


所以 $ifNull不会满足你的要求,
你可以试试 $cond运算符来检查是否缺少字段类型,然后为 0,否则为 1,
{
'$group': {
'_id': {'item': '$item'},
'admissions': {
$sum: {
$cond: [{ $eq: [{ $type: "$admissions" }, "missing"] }, 0, 1]
}
}
}
},

关于python - MongoDB 条件(如果存在则求和,否则为零),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67284850/

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