使用条件if在mongodb中检索单个文档

时间:2018-08-27 09:49:11

标签: javascript mongodb mongoose

我正在尝试查询db,以便如果一个字段存在并且不为null,则使用该字段查询db,否则使用另一个字段。似乎找不到合适的方法来执行此操作。如果有人可以指出我正确的方向,将不胜感激。

谢谢

 tester = await Test.findOne(
                { $cond: {
                    if: {mainId},---> check if not null 
                    then: {'mainId': data.mainId},
                    else: {'subId': data.subId} 
                 }});

1 个答案:

答案 0 :(得分:0)

您必须同时使用“和”和“或”。 您将有两个子查询: 1.和(存在和mainID匹配) 2.(子ID匹配) 上面的两个子查询将进行或运算。

如果在同一字段上使用运算符,则Mongo隐式使用'$ and'运算符。因此,查询可以进一步简化为:

Test.findOne({ 
    $or:[ 
        { 'mainId' :  { $exists : true, $eq: data.mainId }  }, 
        { 'subId' : data.subId  } 
    ] } );

$ eq运算符表示等于。