如果字段存在必须为true,但如果不存在则必须通过true

时间:2020-02-29 15:37:19

标签: mongodb mongoose aggregate

我想检查管道aggregateexisteTransformacion)中是否存在字段。如果该字段存在,则必须为true($match),如果为false,则需要从结果中排除,但如果不存在,则必须为pass。我该如何实现?

 {
            //...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 必须不显示。

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

1 个答案:

答案 0 :(得分:1)

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

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

MongoPlayground