sql >> Databáze >  >> NoSQL >> MongoDB

Optimalizace spojení dotazů Mongodb

Myslím, že něco takového chcete udělat. Tento dotaz jsem netestoval, ale na vašem místě bych to zkusil. To je možné pouze na 3.6 mongodb, protože podporuje více spojení. Cílem je spojit všechny 3 sbírky. První připojení je rodiče a osoba podle ID rodičů a osoby "rodičovské ID". Druhým spojením jsou rodiče a prarodiče. Poté vyfiltrujete podle jména prarodiče a získáte dokument, který obsahuje tohoto prarodiče, jeho syna (rodiče) a jeho vnuka (osobu). Pak už jen promítnete osobu.

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

Myslím, že to bude stačit




  1. Jaká je výchozí cesta k databázi pro MongoDB?

  2. Může Redis 6 využít výhod vícejádrových CPU?

  3. Proč moje schéma nepřidává výchozí hodnoty do polí mongoose?

  4. Může Python zapisovat do databáze a Meteor reaktivně aktualizovat