sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB $in med underfråga

Du kan använda $lookup med pipeline,

  • $match kommer att markera active status
  • $lookup kommer att gå med i ledarkollektionen
    • $match för att kontrollera leader_id och organization
  • $match check leaders är inte [] tom
  • $project för att ta bort leaders fältet
db.teams.aggregate([
  { $match: { active: 1 } },
  {
    $lookup: {
      from: "leaders",
      let: { leader_id: "$leader_id" },
      as: "leaders",
      pipeline: [
        {
          $match: {
            $and: [
              { $expr: { $eq: ["$_id", "$$leader_id"] } },
              { organization: "Software Development" }
            ]
          }
        }
      ]
    }
  },
  { $match: { leaders: { $ne: [] } } },
  { $project: { leaders: 0 } }
])

Lekplats




  1. Ansluta en Redis-behållare med en annan behållare (Docker)

  2. Hur man hittar om det finns en punkt i vilken polygon

  3. Mongoengine är mycket långsam på stora dokument jämfört med inhemsk pymongoanvändning

  4. Inte lika i mongo mapper