Допустим, мои модели - Пользователь и Проект.Каждому пользователю может быть назначено много проектов, и каждому проекту может быть назначено много пользователей.Это типичное отношение «многие ко многим» и может быть сохранено как ( source ):
# The user document.
{
"_id" : ObjectId("4d3ed089fb60ab534684b7e9"),
"project_ids" : [ ObjectId("4d3ed089fb60ab534684b7f2") ]
}
# The project document.
{
"_id" : ObjectId("4d3ed089fb60ab534684b7f2"),
"user_ids" : [ ObjectId("4d3ed089fb60ab534684b7e9") ]
}
Проблема в том, что я хотел бы назначить больше данных, описывающих это отношение, например, рольчто пользователь имеет в проекте (администратор, менеджер и т. д.).В РСУБД я бы просто добавил дополнительный столбец в таблицу соединений.В MongoDB я действительно не знаю, как это сделать.
Должен ли я создать дополнительный встроенный документ в пользовательском или проектном?Я думал о чем-то вроде этого:
# The project document.
{
"_id" : ObjectId("4d3ed089fb60ab534684b7f2"),
"assigned_users" : [
{ user_id: ObjectId("4d3ed089fb60ab534684b7e9"), role: "admin" },
...
]
}
Но я думаю, что запрос для получения всех пользовательских проектов станет довольно сложным, верно?
Я использую Mongoid, но был бы благодарендля любого общего решения (а затем я выясню, как сопоставить это с Mongoid;) Кроме того, я не могу изменить базу данных на RDBMS.