loading...

Discussion on: How do you handle many-to-many relationships in Mongo?

Collapse
ankursaini07 profile image
Ankur Saini

Let's take students and course example..
You can create

Student{
_id:ID
name: String
courses: Array[ID]
}

Course{
_id:ID
name: String
}

Collapse
cameronblandford profile image
Cameron Author

Would it be slow to look up which students were in a particular course then, if there are, say, 100k students and 100k courses?

Collapse
ankursaini07 profile image
Ankur Saini

Let say if you have N students and M courses and if we store course Id in sorted order then the time complexity should be N*log(M).

We can also store list of student IDs in course document. Then the time complexity should be N or o(1) as mongo creates indexes on id.

Thread Thread
nguyenthanhuet profile image
Alex

Hi,
"We can also store list of student IDs in course document. Then the time complexity should be N or o(1) as mongo creates indexes on id."
=> This makes the insert function more complicated ? If you want to add 1 students with 10 courses, you will must insert user_id to courses.student_list (apply with all of 10 courses) and insert 10 course_id to students.course.
Everything has its price, sometimes you have to accept the complexity?

Collapse
enahomurphy profile image
Enaho Murphy

One of the biggest issues I find with this IDs approach is mongodb pipeline, as long as you don't have to do complex pipeline lookup on that many IDs.

There is a memory threshold on aggregates I guess that's why mongoose uses plain queries on the populate function.