我想在mongoDB聚合中做一个match stage,在这个match中,我想检查条件是否存在,使用一个自定义查询,如果不存在,使用另一个自定义查询。自定义查询是嵌套字段。
在搜索和阅读文档之后,我编写了这段代码。但它有一个错误。
我使用MongoDB v4.4。只有这个版本,不能切换到其他版本。
MongoError:FieldPath字段名称不能包含“.”。
{
$match : {
$expr : {
$cond : {
if: { $eq : [ 'type' , 'country'] },
then: {
$and : [
{ 'countryState.status' : 'Confirmed' },
{ 'countryState.prop' : 'high' },
]
},
else: { },
}
}
}
},
如果“type”字段等于country,我想使用自定义查询,如果不是,只使用{}查询。
我很感激任何人可以帮助我,如何在这个匹配阶段与条件查询。
1条答案
按热度按时间huwehgph1#
你要求查询返回“this or that”,所以我们应该使用
$or
。借用@cmgchess playground链接中的示例数据,这个查询应该在逻辑上做你想要的事情,我相信:Demo