Jawaban atas pertanyaan seperti itu di MongoDB sering kali membuat data Anda tidak normal. Jika Anda hanya membutuhkan daftar pengguna dalam grup, Anda dapat menyimpan ID pengguna dan nama pengguna dalam dokumen grup. Dalam beberapa hal, Anda menyusun database sesuai dengan hasil yang ingin Anda lihat di layar daripada mencoba memasukkannya ke dalam format yang dinormalisasi.
Jelas itu hanya akan berfungsi jika daftar grup pengguna Anda (dengan nama) dapat ditampung dalam satu dokumen, tetapi pendekatan Anda saat ini juga memiliki beberapa batasan mengenai ukuran maksimum grup.
Pendekatan lain adalah dengan menyimpan grup tempat pengguna berada dalam larik pada setiap dokumen 'Pengguna'. Tambahkan indeks pada bidang array itu dan sekarang Anda dapat menemukan pengguna berdasarkan grup. Mengingat bahwa pengguna cenderung menjadi anggota grup yang lebih sedikit daripada jumlah anggota dalam grup, ini mungkin merupakan pendekatan terbaik di sini.
db.user.save({_id:"u1", name:"u1 name", groups:[{_id:"g1", name:"Group One"}, ...]});
Sekali lagi Anda dapat menyimpan nama grup dengan _id-nya sehingga Anda dapat segera menampilkan daftar grup milik pengguna dengan satu perjalanan pulang pergi. Tentu saja, jika Anda mengizinkan nama grup berubah, Anda harus memulai tugas latar belakang untuk memperbaiki semua salinan nama ini.
Saya juga akan menggunakan generator id MongoDB bawaan daripada milik Anda sendiri, ia memiliki banyak properti yang diinginkan.