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

Mongodb forespørgsel join optimering

Jeg tror, ​​du vil gøre sådan noget. Jeg testede ikke denne forespørgsel, men dette er hvad jeg ville prøve i dit sted. Dette er kun muligt på 3.6 mongodb, fordi det understøtter flere joinforbindelser. Tanken er at deltage i alle 3 samlinger. Første deltagelse er Forældre og Person efter Forældre-id, og Personer "parentsId". Andet medlem er forældre og bedsteforældre. Derefter filtrerer du ud efter bedsteforældres navn, og du får et dokument, der indeholder den bedsteforælder, hans søn (forælder) og hans barnebarn(person). Så projicerer du bare personen.

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

Jeg tror, ​​det vil gøre det trick




  1. Kan ikke finde modulet 'socket.io/node_modules/redis'

  2. multipel dokumenttransaktion virker ikke i c# ved hjælp af mongodb 4.08 community server

  3. Hvordan opretter man et Dato-felt med standardværdi som det aktuelle tidsstempel i MongoDb?

  4. MongoDB - Træk flere objekter fra et array