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

Преброяване на елементи от друг документ в агрегирането на mongodb

Има много начини,

  • $match премахване на нежелани данни
  • $lookup за присъединяване към колекции
  • $unwind за деконструиране на масива
  • $group за реконструиране на масива и $sum помага за увеличаване с 1 чрез $cond състояние

Ето го скрипта

db.Accounts.aggregate([
  { $match: { _id: 2 } },
  {
    $lookup: {
      from: "Responses",
      localField: "_id",
      foreignField: "accountId",
      as: "responses"
    }
  },
  {
    $unwind: "$responses"
  },
  {
    $group: {
      _id: "$_id",
      name: { $first: "$name" },
      trueResponses: {
        $sum: {
          $cond: [{ $eq: [ "$responses.res", true]},1,0]
        }
      },
      falseResponses: {
        $sum: {
          $cond: [{ $eq: [ "$responses.res", false]},1,0]
        }
      }
    }
  }
])

Работеща Mongo playground




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Какви параметри се предават на обратните извиквания на Mongoose

  2. Полето за намиране на PHP mongo започва с

  3. Mongoose изтегля ObjectId от масива

  4. Съвети за съхранение на резервни копия на MongoDB в облака

  5. Система за гласуване с Backbone.js