首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mongo db聚合匹配条件过滤

mongo db聚合匹配条件过滤
EN

Stack Overflow用户
提问于 2022-04-03 12:33:15
回答 1查看 156关注 0票数 -2

假设我有三个模特:

1-项目.,target_countries

2-自由职业者.国家

3-国家.

现在我们有搜索项目页面,自由职业者可以申请项目/工作,而不是匹配他们的位置。我们有两个条件:

如果项目所有者瞄准了某些国家,那么我们将对照target_locations检查自由职业者的位置.

2-如果所有者没有设置target_locations,那么我们跳过这个过滤器,这样每个人都可以看到项目。

我需要使用聚合(而不是找到)

这是我尝试过的,但没有运气,代码样本

样本输入: freelancerCountryID= 61c9d2753be49339489583b8

输出:主MongoError:未知顶层操作符:$cond。如果您的字段名以“$”符号开头,请考虑使用$getField或$setField。

EN

回答 1

Stack Overflow用户

发布于 2022-04-03 19:12:39

在深入研究之后,我找到了正确语法的解决方案。

使用$expr在$cond之上,因为我们处于$match状态

代码语言:javascript
运行
复制
$match:{
$expr:{
    $cond: {
        if: { 
            $and:[ {$eq: [ '$countryFilterIsActive', "ACTIVE" ]}, {$isArray:'$target_locations'} ]
        },

        then: { $in: [mongoose.Types.ObjectId(freelancerLocationID),'$target_locations'] },
        
        else: {}
    } 
}

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71725934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档