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

MongoDb:aggregering $lookup med filtrering over de udenlandske dokumenter

Du kan bruge $filter array aggregation operator på pets array, der er produceret af din $lookup scene.

Til output kæledyr ældre end 1 år brug

db.users.aggregate([ 
{ 
  $lookup: 
  { 
    from: "pets", 
    localField: "id", 
    foreignField: "owner", 
    as: "pets" 
  } 
}, 
{
  $project: 
  {
    name: 1,
    pets: 
    { 
      $filter: 
      { 
        input: "$pets", 
        as: "pet", 
        cond: { $gte: [ "$$pet.age", 1 ] } 
      } 
    } 
  } 
} 
]);

For at udskrive de ældste kæledyr skal du blot erstatte cond felt af $filter operatør i den tidligere aggregeringspipeline med

cond: { $eq: [ "$$pet.age", { $max: "$pets.age" } ] }



  1. mongodb replicaset new member viser ikke den korrekte diskbrug på EC2

  2. Sådan filtreres en samling baseret på hvert array-element i et doc-felt i Mongodb

  3. Hvordan får jeg en liste over kun ObjectId'erne, der bruger pymongo?

  4. Angiv MongoDb-samlingens navn under kørsel i Spring boot