如果字段存在必须为真,但如果不存在则必须像真一样通过

Posted

技术标签:

【中文标题】如果字段存在必须为真,但如果不存在则必须像真一样通过【英文标题】:If field exist must be true, but if not exist must be pass like true 【发布时间】:2020-06-13 10:40:23 【问题描述】:

我想检查管道aggregate (existeTransformacion) 中是否存在字段。如果此字段存在必须为真才能通过($match),如果为假,我需要从结果中排除,但如果不存在则必须通过。我怎样才能做到这一点?

 
            //...more data
            "ubicacionActual": 
                "transformacion": 
                   "trabajando": true,
                
            ,
            //This field come from $project in this way 
            //$project: existeTransformacion: '$ubicacionActual.transformacion.trabajando'
            "existeTransformacion": true,
            "paso": 1
        ,

所以基本上:

如果存在existeTransformacionexisteTransformacion===true 必须展示。

如果存在existeTransformacionexisteTransformacion===false 一定没有显示。

如果不存在,则必须显示。

【问题讨论】:

有点迷惑:你已经有了existeTransformacion这个字段?或者你需要计算它的价值? $match 仅适用于管道步骤,不适用于 $project 【参考方案1】:

您需要使用$or$exists 运算符


  $match: 
    $or: [
      
        "existeTransformacion": true
      ,
      
        "existeTransformacion": 
          $exists: false
        
      
    ]
  

MongoPlayground

【讨论】:

以上是关于如果字段存在必须为真,但如果不存在则必须像真一样通过的主要内容,如果未能解决你的问题,请参考以下文章

如果存在数组,则需要 Laravel 验证数组元素

shell脚本判断里面的字符含义

shell判断文件是不是存在

linux条件判断之判断文件是否存在

shell里面if条件判断

Shell与if相关参数