sql >> Databáze >  >> NoSQL >> MongoDB

Počítejte položky z jiného dokumentu v agregaci mongodb

Existuje mnoho způsobů,

  • $match eliminovat nežádoucí data
  • $lookup připojit se ke sbírkám
  • $unwind dekonstruovat pole
  • $group k rekonstrukci pole a $sum pomáhá zvýšit o 1 pomocí $cond stav

Zde je skript

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

Fungující Hřiště Mongo




  1. Jak používat MongoDB Stitch v aplikacích pro Android

  2. Rails:ukládání zašifrovaných dat do databáze

  3. Mongo Odlišná agregace

  4. Implementace stránkování pomocí MongoDB, Express.js a Slush