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

Brug som en grafdatabase til at finde venners venner i MongoDb

Selvom det ikke ville være umuligt, ville MongoDB ikke passe godt til dette scenarie.

Årsagen er, at MongoDB ikke laver JOINs. Når du har brug for en forespørgsel, der spænder over flere dokumenter, har du brug for en separat forespørgsel for hvert dokument.

I dit eksempel er hver user dokument ville have et array med _id deres venner. At finde "alle venner af brugerens venner, som også er venner af brugeren" ville betyde, at du ville:

  1. find brugerA og få hans venner-array
  2. find alle brugere i det array og få deres venne-arrays
  3. find alle brugere i disse arrays, som har UserB i deres friends-array

Det er tre forespørgsler, du skal udføre. Mellem hver af disse forespørgsler skal resultatsættet sendes til applikationen, applikationen skal formulere en ny forespørgsel og sende den tilbage til databasen. Resultatsættet, der returneres fra den 2. forespørgsel, kan være ret stort, hvilket betyder, at den tredje forespørgsel kan tage et stykke tid.

tl;dr: Brug det rigtige værktøj til opgaven. Når dine data er grafbaserede, og du vil lave grafbaserede forespørgsler på dem, skal du bruge en grafdatabase.



  1. Få månedsnavnet fra en dato i SQL

  2. Hvordan kan jeg omdøbe et felt for alle dokumenter i MongoDB?

  3. Hvordan man betinget projekterer felter under aggregat i mongodb

  4. IndsætMange arbejder ikke i mongodb