Ini adalah masalah fan-in vs fan-out. Saya sarankan Anda mencoba fan-out:
Simpan feed
koleksi untuk pengguna Anda. Saat pengguna mengunggah dokumen, sisipkan item umpan baru di setiap koleksi item umpan temannya. Koleksinya bisa terlihat seperti ini:
{
"_id": (some id)
"UserId": (id of the user who 'owns', i.e. reads this feed)
"FriendId": (if of the friend who posted the file)
"FriendName": "John Doe" (name of the fried, denormalized)
"Timestamp": ...
}
Gunakan indeks gabungan {UserId, Timestamp}
.
Pendekatan ini berat menulis:Jika Jane memiliki ratusan teman, ratusan sisipan ini akan memakan waktu mereka. Di sisi lain, mengunggah file biasanya membutuhkan banyak waktu, sehingga biayanya dapat diabaikan, dan pembacaan Anda akan sangat sederhana.
Tentu saja, ini dapat lebih dioptimalkan dengan lebih banyak usaha, tetapi itu akan baik-baik saja untuk sedikit lalu lintas.