尝试使用icCube创建MongoDB数据源。我们的想法是将数组的大小作为新字段返回。类似的东西:
$project:
{
"people": 1,
"Count myFieldArray" : {$size : "$myFieldArray" }
}
但我在某些记录中遇到以下错误:
The argument to $size must be an Array, but was of type: EOO
如果字段为空或不是数组(摆脱错误),是否存在大小为0的方法?
答案 0 :(得分:89)
您可以在此处使用$ifNull
运算符。看来该字段不是数组,也不是给定错误所不存在的字段:
{ "$project": {
"people": 1,
"Count": {
"$size": { "$ifNull": [ "$myFieldArray", [] ] }
}
}}
答案 1 :(得分:0)
替代解决方案是使用
消除具有空值的文档$match: {myFieldArray: { $elemMatch: { $exists: true } }}
此外,被'$'引用用作$ size的参数的文档字段(此处为“ $ myFieldArray”)也必须是投影的一部分。
$project:
{
"people": 1,
"myFieldArray":1,
"Count myFieldArray" : {$size : "$myFieldArray" }
}
答案 2 :(得分:0)