Saya ingin memeriksa apakah ada bidang di pipeline aggregate (existeTransformacion) . Jika bidang ini ada harus benar untuk lulus ($match) dan jika salah saya harus mengecualikan dari hasil saya, tetapi jika tidak ada harus lulus. Bagaimana saya bisa mencapai ini?

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

Jadi pada dasarnya:

  • Jika ada existeTransformacion dan existeTransformacion===true harus menunjukkan.

  • Jika ada existeTransformacion dan existeTransformacion===false harus tidak menunjukkan.

  • jika tidak ada harus ditampilkan.
1
Angel 29 Februari 2020, 18:37

1 menjawab

Jawaban Terbaik

Anda perlu menggunakan operator $or dan $exists

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

Taman Bermain Mongo

1
Valijon 29 Februari 2020, 15:51