Secara umum, merupakan ide yang buruk untuk menyematkan hubungan mengikuti/diikuti oleh ke dalam dokumen pengguna, karena beberapa alasan:
(1) ada batas ukuran dokumen maksimum 16 MB, dan masuk akal bahwa pengguna populer dari situs yang berlangganan dengan baik mungkin memiliki ratusan ribu pengikut, yang akan mendekati ukuran dokumen maksimum,
(2) hubungan pengikut sering berubah, dan kasus di mana pengguna mendapatkan banyak pengikut diterjemahkan menjadi pertumbuhan dokumen berulang jika Anda menyematkan pengikut. Pertumbuhan dokumen yang sering akan secara signifikan menghambat kinerja MongoDB, dan karenanya harus dihindari (pertumbuhan dokumen sesekali, terutama dokumen cenderung mencapai ukuran akhir yang stabil, kurang dari penalti kinerja).
Jadi, ya, yang terbaik adalah membagi hubungan mengikuti/diikuti menjadi kumpulan catatan terpisah yang masing-masing memiliki dua bidang, mis., { _id :, oid :}, dengan indeks pada _id (untuk "siapa yang saya ikuti? " kueri) dan oid (untuk kueri "siapa yang mengikuti saya?"). Setiap perubahan status individual dimodelkan oleh satu penambahan atau penghapusan dokumen, meskipun jika Anda juga menampilkan hal-hal seperti jumlah pengikut, Anda mungkin harus menyimpan penghitung terpisah yang Anda perbarui setelah penyisipan/penghapusan edge.
(Tentu saja, ini mengandaikan persyaratan bisnis Anda memungkinkan Anda beberapa fleksibilitas pada detail konsistensi:secara umum, jika kode tampilan Anda memberi tahu pengguna bahwa dia memiliki 304 pengikut dan kemudian melanjutkan untuk menghitungnya, hanya pengguna yang paling cerewet yang akan memeriksa apakah pengikut yang disebutkan penghitungan hingga 304. Jika persyaratan bisnis memerlukan konsistensi mutlak, Anda akan memerlukan database yang mengisolasi transaksi untuk Anda, atau Anda harus menghitung sendiri sebagai bagian dari menampilkan semua identitas pengguna.)