MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana memproyeksikan bidang secara kondisional selama agregat di mongodb

Diperbarui

Agregasi ini akan menetapkan nilai skill_score ke 0 jika _skills tidak ada, maka gunakan $redact untuk menghapus subdokumen yang memiliki skill_score sama dengan 0 :

db.project_if.aggregate([
  {
    $unwind: {
      path: '$_skills',
      preserveNullAndEmptyArrays: true,
    }
  },
  {
    $project: {
      _skills: {
        label: '$_skills',
        skill_score: {
          $cond: {
            if: {
              $eq: ['$_skills', undefined]
            },
            then: 0,
            else: 1,
          }
        }
      }
    }
  }, 
  {
    $redact: {
      $cond: {
        if: { $eq: [ "$skill_score", 0 ] },
        then: '$$PRUNE',
        else: '$$DESCEND'
      }
    }
  }
]);

Hasilnya akan seperti:

[
  { "_id" : '', "_skills" : { "label" : "skill1", "skill_score" : 1 } },
  { "_id" : '', "_skills" : { "label" : "skill2", "skill_score" : 1 } },
  { "_id" : '' },
]



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mengubah skrip penyemaian luwak menjadi janji

  2. Memecahkan masalah Cluster Sharded MongoDB

  3. Alasan untuk dan menentang pindah dari SQL server ke MongoDB

  4. MongoError:pengguna tidak diizinkan untuk melakukan tindakan

  5. Membuat Data Uji untuk MongoDB