sql >> Databasteknik >  >> NoSQL >> MongoDB

Räkna objekt från ett annat dokument i mongodb-aggregation

Det finns många sätt,

  • $match eliminera oönskad data
  • $lookup för att gå med i samlingar
  • $unwind för att dekonstruera arrayen
  • $group för att rekonstruera arrayen och $sum hjälper till att öka med 1 med $cond skick

Här är manuset

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

Arbetande Mongo lekplats




  1. Finns det ett sätt att lagra python-objekt direkt i mongoDB utan att serialisera dem

  2. Hur man får det senaste meddelandet från chattkonversation i mongodb

  3. Hur ansluter man till MongoDB från en annan PHP-klass?

  4. hur man korrekt kastar ObjectId i mongoose