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

Оптимизиране на присъединяване на заявки към Mongodb

Мисля, че искаш да направиш нещо подобно. Не съм тествал това запитване, но това бих опитал на твое място. Това е възможно само на 3.6 mongodb, защото поддържа множество присъединявания. Идеята е да се обединят и 3-те колекции. Първото присъединяване е родители и лице по идентификатор на родители и лица "parentsId". Второто присъединяване е Родители и баби и дядовци. След това филтрирате по име на баба и дядо и ще получите документ, който съдържа този баба и дядо, неговия син (родител) и неговия внук (лице). След това просто проектирате човека.

    db.Parents.aggregate([
       {
          $lookup:{
             from:"Person",
             localField:"_id",
             foreignField:"parentId",
             as:"Person"
          }
       },
       {
          $unwind:"$Person"
       },
       {
          $lookup:{
             from:"Grandparents",
             localField:"grandparentId",
             foreignField:"_id",
             as:"Grandparents"
          }
       },
       {
          $unwind:"$Grandparents"
       },
       {$match:{Grandparents.name:"x"}},
       {$project:{Person.name:1,Person._id:1}}
}])

Мисля, че това ще свърши работа




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Инсталиране на MongoDB в WSL

  2. meteor $pull премахване от масив

  3. Как да наблюдавате вашите сървъри за бази данни с помощта на ClusterControl CLI

  4. MongoDB да използва разделяне с $lookup оператор за агрегиране

  5. Намерете празни документи в база данни