sql >> Database >  >> NoSQL >> MongoDB

Tel items uit een ander document in mongodb-aggregatie

Er zijn veel manieren,

  • $match verwijder ongewenste gegevens
  • $lookup om deel te nemen aan collecties
  • $unwind om de array te deconstrueren
  • $group om de array te reconstrueren en $sum helpt te verhogen met 1 met behulp van $cond staat

Hier is het script

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

Werkende Mongo-speeltuin




  1. Mongo Map-Reduce To Mimic count (distinct(...)) group by in SQL

  2. Hoe kan ik een unieke id met twee kolommen toevoegen aan de mongodb in een meteor-app?

  3. Hoe kan ik nieuwe velden maken van een bestaande string met $Project?

  4. vraag terug op basis van datum