MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDb:агрегиране $lookup с филтриране върху чуждите документи

Можете да използвате $filter оператор за агрегиране на масив на pets масив, който се произвежда от вашия $lookup етап.

За извеждане на домашни любимци на възраст над 1 година използвайте

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

За да изведете най-старите домашни любимци, просто заменете cond поле на $filter оператор в предишния канал за агрегиране с

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Spring Data MongoDB с Java 8 LocalDate MappingException

  2. MongoDB ограничена колекция и монотично нарастващ индекс

  3. Как да направя заявка за отделни стойности в Mongoose, но да върна целия документ?

  4. PHP &Mongo във Vagrant, неуловено изключение „MongoException“ със съобщение „размерът на BSON документ е x байта, максимумът е 0“

  5. Удостоверяване по време на свързване към сървър на MongoDB с помощта на Java