Pertanyaan bagus. Pertama-tama saya akan menguraikan sedikit tentang cara kerja hubungan N:N, lalu saya akan menjelaskan secara rinci setiap poin-poin Anda.
N:N di MySQL biasanya Anda memiliki tabel pivot yang menghubungkan antara pengguna dan minat Anda (tabel minat_pengguna). Di mongo Anda melakukan ini sedikit berbeda. Anda masih memiliki koleksi pengguna dan minat, namun sekarang, Anda menyimpan daftar kunci di bawah minat untuk pengguna. JADI sesuatu seperti ini:
User Collection {
"name":"Josh",
"user":"jsmith",
"interests":[
{
"_id":12345,
"rating":"like"
},
{..}..
]
}
Dengan menyimpan minat Anda dalam daftar yang dikunci di tabel minat Anda, Anda dapat melakukan setiap tindakan yang Anda perlukan. Jika Anda ingin melakukan kueri, Anda akan melakukannya berdasarkan ID yang ada di tabel minat, lalu lakukan kueri menggunakan $in modifier .
Sekarang untuk koleksi minat Anda, saya akan melakukan hal berikut:
User Interest {
"_id":objectId
"label":"Swimming",
"count":intValue
}
Saat menambahkan minat ke dokumen pengguna, variabel jumlah kemudian akan bergantung pada definisi peringkat Anda. Jika Anda menyimpan peringkat Anda di area terpisah (atau dalam logika), maka nilai yang Anda tetapkan padanya akan menjadi apa yang Anda hubungkan dengan nilai int yang diminati. IE:Pengguna menilai itu meh (yang memiliki nilai 1) maka Anda akan menambahkan 1 ke nilai hitungan.
Semoga ini bermanfaat dan setidaknya memunculkan beberapa ide lain tentang cara menyusunnya!
Semoga berhasil, ingat MONGO LUAR BIASA.