【发布时间】:2019-08-23 07:56:30
【问题描述】:
我有一个为用户存储对象数组的简单文档,我希望得到这些数组的总和以及所有数组的总和;挑战在于某些文档缺少其他文档所具有的字段,这会导致我的聚合查询失败。
文档看起来像这样。
{
name: '',
type: '',
cars: [],
boats: [],
planes: []
}
有些人没有船或飞机……这些文件可能看起来像
{
name: '',
type: '',
cars: []
}
所以当我运行我的聚合时
[
{
'$match': {
'type': 'big_spender'
}
}, {
'$project': {
'name': '$name',
'cars': {
'$size': '$cars'
},
'boats': {
'$size': '$boats'
},
'planes': {
'$size': '$planes'
}
}
}, {
'$addFields': {
'total_vehicles': {
'$add': [
'$cars', '$boats', '$planes'
]
}
}
}
]
我收到错误:“$size 的参数必须是一个数组,但类型为:缺失”
我很确定我可以使用 $exists 来避免这个问题,并返回一个 0,但我不知道那个语法可能是什么样子。
我需要为不存在的数组返回 0,所以当我将它们添加到总计时,我得到一个正确的总计并且没有错误。
任何帮助表示赞赏。
【问题讨论】:
-
重复问题的标题曾经是您引用不存在的数组时返回的错误消息。如您所见,错误消息的措辞实际上已经改变。更新标题以便更容易找到。
-
谢谢尼尔 - 这将有助于未来。
标签: arrays mongodb aggregation-framework