mongodb $ cond与查找

时间:2019-04-30 11:59:40

标签: mongodb mongodb-query

这是我所拥有的示例订购文件

{numberOfHours: 10, status: “BOOKED”, hidden: true},
{numberOfHours: 5, status: “NOT_BOOKED”,hidden: true},
{numberOfHours: 1, status: “BOOKED”, hidden: true},
{numberOfHours: 10, status: “PENDING”, hidden: true}

这是我的要求。我想找到所有不是hidden(hidden = false)的东西。但是,如果状态为“BOOKED”,即使hiddentrue,它也应显示。我也必须使用collection.find()

这是我的查询-

{  $expr: {
       $eq:[ {
          $cond: {
             if: { "$status" : { $ne: "BOOKED"} },
             then: {"$hidden"},
             else: {null}
           }
       },
       false ] }
}

如何从这里继续?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以只使用$or来表达两个条件:

{  $expr: {
       $or: [ { $eq: [ "$status", "BOOKED" ] }, { $eq: [ "$hidden", false ] } ]
}

(如果状态不同于BOOKED,则它会检查是否将隐藏设置为false

答案 1 :(得分:0)

{$expr: {
    {$cond: {
        "if": {"$eq": ["$status", "BOOKED"]},
        "then": {"$hidden"},
        "else": {null}
      }
    },false}
}

注意:-我根据您的问题给出了答案。 希望对您有帮助。