我在mongo集合中具有这种类型的对象:
[ ...
{array: ['keyword1', 'keyword2'], someField: "text", ...}
...
]
我想使用这样的聚合:
db.getCollection("SomeCollection").aggregate(
[ ...
{ "$project" : { "size" : {"$size" : "$someField"}}}
{ "$match": {size: {$gte: 2} } }
...
])
当我添加匹配步骤时,我有此错误消息:
{
"ok" : 0.0,
"errmsg" : "The argument to $size must be an array, but was of type: missing",
"code" : NumberInt(17124),
"codeName" : "Location17124"
}
我敢肯定有超过2个元素的数组。
我很好奇为什么这个错误。为了记录,我在" coll.find"查询中使用$进行解决方法。
聚合正在返回错误,因为第一阶段是将非阵列字段(someField
(传递给$size
运算符。传递给$ size的值必须解析为数组:
$ size的参数必须解析为数组。如果争论 $ size丢失或不解决数组,$ size错误。
也值得注意的是,错误是在说but was of type: missing
,因为您的文档中的字段具有不同的名称(somefield
(,即聚合(someField
(,这意味着汇总对$size
运算符无关。