我正在尝试查询db,以便如果一个字段存在并且不为null,则使用该字段查询db,否则使用另一个字段。似乎找不到合适的方法来执行此操作。如果有人可以指出我正确的方向,将不胜感激。
谢谢
tester = await Test.findOne(
{ $cond: {
if: {mainId},---> check if not null
then: {'mainId': data.mainId},
else: {'subId': data.subId}
}});
答案 0 :(得分:0)
您必须同时使用“和”和“或”。 您将有两个子查询: 1.和(存在和mainID匹配) 2.(子ID匹配) 上面的两个子查询将进行或运算。
如果在同一字段上使用运算符,则Mongo隐式使用'$ and'运算符。因此,查询可以进一步简化为:
Test.findOne({
$or:[
{ 'mainId' : { $exists : true, $eq: data.mainId } },
{ 'subId' : data.subId }
] } );
$ eq运算符表示等于。