首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongodb aggregation if condition - if true then execute filter

mongodb aggregation if condition - if true then execute filter
EN

Stack Overflow用户
提问于 2019-03-26 20:44:19
回答 1查看 201关注 0票数 0

我正在尝试执行一个查询,该查询获取profession和subProfession数组,并返回具有匹配专业/子专业的所有治疗师

但是,如果profession和subProfession数组都为空,则返回所有治疗师。

下面是我想要得到的逻辑的伪代码:

代码语言:javascript
复制
        professionsFlag = professions.length != 0;
        subProfessionsFlag = subProfessions.length != 0;
        Therapist.aggregate([
            {
                $match: {
                    $cond: {if: professionsFlag || subProfessionsFlag, 
                        then:
                        {$or: [
                            { profession: { $in: professions } },
                            {
                                subProfession: {
                                    $elemMatch: { $in: subProfessions }
                                }
                            }
                        ]}
                    },
                }
            },

此代码因unknown top level operator: $cond而失败

这样做的正确原因是什么?

注意:查询的$or部分按预期工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-26 21:14:10

我最终得到了这段代码:

代码语言:javascript
复制
      let filter = {
            $match: {
                image: { $exists: true, $ne: null },
                'clinic.city': params.place.value
            }
        };

        if ( professions.length != 0 || subProfessions.length != 0) {
            filter.$match.$or =  [
                { profession: { $in: professions } },
                {
                    subProfession: {
                        $elemMatch: { $in: subProfessions }
                    }
                }
            ];
        }

        Therapist.aggregate([
            filter,
        ], callback);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55357532

复制
相关文章

相似问题

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