sql >> Database teknologi >  >> NoSQL >> MongoDB

Tæl elementer fra et andet dokument i mongodb-aggregation

Der er mange måder,

  • $match eliminere uønskede data
  • $lookup at deltage i samlinger
  • $unwind at dekonstruere arrayet
  • $group for at rekonstruere arrayet og $sum hjælper med at øge med 1 ved at bruge $cond tilstand

Her er scriptet

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]
        }
      }
    }
  }
])

Arbejd Mongo legeplads




  1. hvordan dræber jeg inaktive redis-klienter

  2. Meteor:Gem RegExp-objekt til session

  3. base64 til guide til base64

  4. MongoDB:aggregeringsramme:$match mellem felter