MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

mongodb агрегира множество масиви

Първо добавяте поле voteType във всеки вот. Това поле показва неговия тип. Имайки това поле, не е необходимо да съхранявате гласовете в два отделни масива mlVoters и egVoters; вместо това можете да свържете тези масиви в единичен масив за документ и след това да го развиете.

В този момент имате един документ на глас с поле, което показва кой тип е. Сега просто трябва да групирате по имейл и в груповия етап да извършите две условни суми, за да преброите колко гласа от всеки тип има за всеки имейл.

Накрая добавяте поле totalCount като сбор от другите два броя.

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. query mongo:намиране на броя на масива във всички документи на колекция

  2. къде да вмъкнете функции в codeigniter mongodb

  3. Как да импортирате данни от CSV файл в колекцията Meteor от страната на сървъра

  4. Оперативни фактори, които трябва да се вземат предвид по време на моделиране на данни на MongoDB

  5. Бързо пейджиране с MongoDB