Meskipun bukan tidak mungkin, MongoDB tidak cocok untuk skenario ini.
Alasannya adalah bahwa MongoDB tidak melakukan GABUNG. Saat Anda membutuhkan kueri yang mencakup banyak dokumen, Anda memerlukan kueri terpisah untuk setiap dokumen.
Dalam contoh Anda, setiap user
dokumen akan memiliki larik dengan _id
dari teman-teman mereka. Untuk menemukan "semua teman dari teman UserA yang juga teman UserB" berarti Anda akan:
- temukan penggunaA dan dapatkan array teman
- temukan semua pengguna dalam array itu dan dapatkan array teman mereka
- temukan semua pengguna dalam array ini yang memiliki UserB di array teman mereka
Ini adalah tiga pertanyaan yang harus Anda lakukan. Di antara masing-masing kueri ini, kumpulan hasil harus dikirim ke aplikasi, aplikasi harus merumuskan kueri baru dan mengirimkannya kembali ke database. Kumpulan hasil yang dikembalikan dari kueri ke-2 bisa sangat besar, yang berarti kueri ke-3 bisa memakan waktu cukup lama.
tl;dr: Gunakan alat yang tepat untuk pekerjaan itu. Saat data Anda berbasis grafik dan Anda ingin melakukan kueri berbasis grafik, gunakan database grafik.