我正在尝试进行查询,以获取专业和subProfession的数组,并返回具有匹配的专业/ subProfession的所有治疗师
但是,如果专业和subProfssion都为空,则返回所有治疗师。
这是我要获取的逻辑的伪代码:
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
部分按预期工作。
答案 0 :(得分:0)
我最终得到了这段代码:
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);