我试图在聚合管道中的某个字段上求和,而该字段可能不存在。否则,返回值应为零。这是我目前的代码:
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
1条答案
按热度按时间hmae6n7t1#
pymongo.errors.operationfailure:$ifnull累加器是一元运算符
这个
<accumulator>
运算符必须是以下累加器运算符之一:累加器运算符,和$ifNull
接线员不是其中之一,这个
$sum
如果要求和,运算符必须在根中,$ifnull的用法是:
计算表达式,如果表达式的计算结果为非空值,则返回表达式的值。如果表达式的计算结果为空值(包括未定义值或缺少字段的示例),则返回替换表达式的值。
所以呢
$ifNull
不能满足你的要求,您可以尝试$cond运算符检查字段类型是否丢失,然后选择0,否则选择1,