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

mongodb menggabungkan beberapa array

Pertama, Anda menambahkan bidang voteType dalam setiap pemungutan suara. Bidang ini menunjukkan jenisnya. Memiliki bidang ini, Anda tidak perlu menyimpan suara dalam dua larik terpisah mlVoters dan egVoters; Anda dapat menggabungkan array tersebut menjadi satu array per dokumen, dan bersantai setelahnya.

Pada titik ini Anda memiliki satu dokumen per suara, dengan bidang yang menunjukkan jenisnya. Sekarang Anda hanya perlu mengelompokkan melalui email dan, di tahap grup, lakukan dua penjumlahan bersyarat untuk menghitung berapa banyak suara dari setiap jenis yang ada untuk setiap email.

Akhirnya Anda menambahkan bidang totalCount sebagai jumlah dari dua hitungan lainnya.

db.documents.aggregate([
  {
    $addFields: {
      mlVoters: {
        $ifNull: [ "$mlVoters", []]
      },
      egVoters: {
        $ifNull: [ "$egVoters", []]
      }
    }
  },
  {
    $addFields: {
      "mlVoters.voteType": "ml",
      "egVoters.voteType": "eg"
    }
  },
  {
    $project: {
      voters: { $concatArrays: ["$mlVoters", "$egVoters"] }
    }
  },
  {
    $unwind: "$voters"
  },
  {
    $project: {
      email: "$voters.email",
      voteType: "$voters.voteType"
    }
  },
  {
    $group: {
      _id: "$email",
      mlCount: {
        $sum: {
          $cond: {
            "if": { $eq: ["$voteType", "ml"] },
            "then": 1,
            "else": 0
          }
        }
      },
      egCount: {
        $sum: {
          $cond: {
            "if": { $eq: ["$voteType", "eg"] },
            "then": 1,
            "else": 0
          }
        }
      }
    }
  },
  {
    $addFields: {
      totalCount: {
        $sum: ["$mlCount", "$egCount"]
      }
    }
  }
])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongo DB:Tidak dapat membuat cluster sharding di Ubuntu

  2. Mongodb tidak diperbarui dengan benar dari 4.2 ke 4.4

  3. Pencarian MongoDB berdasarkan tipe DateTime tidak berfungsi

  4. layanan mongodb tidak dimulai

  5. Dapatkan Daftar Indeks di MongoDB