我正在尝试执行一个查询,该查询获取profession和subProfession数组,并返回具有匹配专业/子专业的所有治疗师
但是,如果profession和subProfession数组都为空,则返回所有治疗师。
下面是我想要得到的逻辑的伪代码:
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部分按预期工作。
发布于 2019-03-26 21:14:10
我最终得到了这段代码:
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);https://stackoverflow.com/questions/55357532
复制相似问题