Hoewel het niet onmogelijk zou zijn, zou MongoDB niet geschikt zijn voor dit scenario.
De reden is dat MongoDB geen JOINs doet. Als u een query nodig heeft die meerdere documenten omvat, heeft u voor elk document een aparte query nodig.
In uw voorbeeld heeft elke user
document zou een array hebben met de _id
van hun vrienden. Het vinden van "alle vrienden van de vrienden van UserA die ook vrienden zijn van UserB" zou betekenen dat u:
- zoek userA en krijg zijn vrienden-array
- vind alle gebruikers in die array en verkrijg hun vriendenarrays
- vind alle gebruikers in deze arrays die UserB in hun vriendenarray hebben
Dit zijn drie queries die je moet uitvoeren. Tussen elk van deze zoekopdrachten moet de resultatenset naar de applicatie worden gestuurd, de applicatie moet een nieuwe zoekopdracht formuleren en terugsturen naar de database. De resultatenset die wordt geretourneerd door de 2e zoekopdracht kan behoorlijk groot zijn, wat betekent dat de 3e zoekopdracht enige tijd kan duren.
tl;dr: Gebruik het juiste gereedschap voor de klus. Als uw gegevens op grafieken zijn gebaseerd en u daarop op grafieken gebaseerde query's wilt uitvoeren, gebruikt u een grafiekdatabase.