MongoDB 聚合 if 条件 - 如果为 true,则执行过滤器



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

但是,如果职业和子职业的两个数组都是空的,则返回所有治疗师。

这是我尝试获取的逻辑的伪代码:

        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部分按预期工作。

我最终得到了这段代码:

      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);

最新更新