【问题标题】:Mongodb $cond with findMongodb $cond 与查找
【发布时间】:2019-09-19 02:08:42
【问题描述】:

这是我的一个示例订单文档

{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 ] }
}

如何从这里开始?任何帮助将不胜感激。

【问题讨论】:

    标签: mongodb mongodb-query


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:
      {$expr: {
          {$cond: {
              "if": {"$eq": ["$status", "BOOKED"]},
              "then": {"$hidden"},
              "else": {null}
            }
          },false}
      }
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-04
        • 2019-08-07
        • 2013-01-04
        • 2014-07-19
        • 2021-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多