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

Cocokkan Dua bidang berbeda di Luwak, Agregat?

Anda dapat menggunakan agregasi berikut:

db.col.aggregate([
    {
        $addFields: {
            weightedIds: {
              $map:
                 {
                   input: "$weighted",
                   as: "w",
                   in: "$$w.phaseId"
                 }
            }
        }
    },
    {
      $project: {
        _id: 1,
        weighted: 1,
        phases: {
            $filter: {
             input: "$phases",
             as: "phase",
             cond: { $gte: [ { $indexOfArray: [ "$weightedIds" , "$$phase._id" ] }, 0 ] }
            }
        }
      }
    }
])

Kami menggunakan $map untuk mengambil hanya phaseId bidang weighted dan kemudian kita dapat memfilter phases menggunakan $filter memeriksa setiap fase apakah sesuai id ada (menggunakan $indexOfArray yang mengembalikan -1 jika tidak)




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kembalikan catatan terbaru dari subdokumen di Mongodb

  2. Cara mengambil kunci berbeda di dalam objek di MongoDB

  3. Mengulangi kursor mongodb secara serial (menunggu panggilan balik sebelum pindah ke dokumen berikutnya)

  4. MongoDB:Menghapus bidang dari SEMUA subdokumen dalam bidang array

  5. Set Replika MongoDB dengan Arbiter