下面是我的聚合查询中的一个块,
{
$addFields: {
destinations: {
$filter: {
input: "$destinations",
cond: {
$and: [
{
$or: [
{
"$$this.reported_at": {
$exists: false
}
},
{
"$$this.reported_at": {
$eq: null
}
}
],
},
{
$eq: [
"$$this.type",
1
]
}
]
}
}
}
}
},
运行时抛出以下错误
query failed: (InvalidPipelineOperator) Invalid $addFields :: caused by :: Unrecognized expression '$$this.reported_at'
尽管reported_at
是另一个属性,就像destinations
数组中的type
一样。当我删除包含OR条件的对象时,它不会抛出错误。请帮我解决这个问题。
先谢谢你了
2条答案
按热度按时间fjaof16o1#
在
$filter
cond
字段中,必须使用表达式运算符。您的查询应如下所示:2izufjch2#
这一个也应该起作用: