Chociaż nie byłoby to niemożliwe, MongoDB nie byłoby dobrym rozwiązaniem dla tego scenariusza.
Powodem jest to, że MongoDB nie wykonuje JOIN. Jeśli potrzebujesz zapytania, które obejmuje wiele dokumentów, potrzebujesz osobnego zapytania dla każdego dokumentu.
W Twoim przykładzie każdy user
dokument miałby tablicę z _id
ich przyjaciół. Aby znaleźć „wszystkich znajomych znajomych Użytkownika A, którzy są również znajomymi Użytkownika B” oznaczałoby, że:
- znajdź użytkownika A i zdobądź tablicę jego znajomych
- znajdź wszystkich użytkowników w tej tablicy i uzyskaj ich tablice znajomych
- znajdź wszystkich użytkowników w tych tablicach, którzy mają UserB w swojej tablicy znajomych
Oto trzy zapytania, które musisz wykonać. Pomiędzy każdym z tych zapytań zestaw wyników musi zostać przesłany do aplikacji, aplikacja musi sformułować nowe zapytanie i odesłać je z powrotem do bazy danych. Zestaw wyników zwrócony z drugiego zapytania może być dość duży, co oznacza, że trzecie zapytanie może trochę potrwać.
tl;dr: Użyj odpowiedniego narzędzia do pracy. Jeśli Twoje dane są oparte na wykresach i chcesz wykonywać na nich zapytania oparte na wykresach, użyj wykresowej bazy danych.