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

Agregasi dengan beberapa kriteria dan jumlah yang cocok berdasarkan tombol hitung

Karena ada dua koleksi, kita perlu menggunakan

  • $lookup untuk bergabung dengan koleksi derek. Di sini saya menggunakan tidak terkait subkueri
  • Agregasi dilakukan di colA koleksi, tetapi di dalam lookup pipeline kami melakukan agregasi pada colB . $unwind membantu untuk merusak struktur items . $match membantu menghilangkan data yang tidak diinginkan (tahap pertandingan memerlukan $expr ).
  • Setelah join kita berhasil, kita tinggal menghitung array menggunakan $size
  • $reduce membantu menjumlahkan nilai larik size

Skrip mongo diberikan di bawah ini.

db.colA.aggregate([
  {
    $lookup: {
      from: "colB",
      let: {
        bid: "$_id"
      },
      pipeline: [
        {
          $match: {
            $or: [
              {
                is_delete: false
              },
              {
                is_delete: {
                  "$exists": false
                }
              }
            ]
          }
        },
        {
          $unwind: "$items"
        },
        {
          $match: {
            $expr: {
              $eq: [
                "$items._id",
                "$$bid"
              ]
            }
          }
        },
        
      ],
      as: "data"
    }
  },
  {
    $project: {
      count: {
        $reduce: {
          input: "$data",
          initialValue: 0,
          in: {
            $add: [
              "$$value",
              "$$this.items.size"
            ]
          }
        }
      }
    }
  }
])

Bekerja Taman bermain Mongo




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:Desain skema yang efisien dengan dokumen yang disematkan

  2. Halaman komentar tersemat di mongodb

  3. mongodb.countDocuments lambat ketika set hasil besar bahkan jika indeks digunakan

  4. NestJS:Cara Menerapkan Otentikasi Pengguna Berbasis Sesi

  5. Instal MongoDB di Windows