Я новичок в базах данных MongoDB и NoSQL, и я пытаюсь выучить разные способы мышления, о которых все упоминают, когда дело доходит до NoSQL.
У меня типичная ситуация с отношениями "многие к одному" Пожалуйста, не говорите мне, что MongoDB не является реляционной базой данных, потому что я это уже знаю. Ключевой момент - реальность работает определенным образом, и мне нужно подать заявку, чтобы отразить ее. Реальный мир полон отношений, и если ваш ответ «выберите другую БД для вашего случая» , то я думаю, что команда MongoDB могла бы закрыть свой бизнес, потому что их продукт был бы совершенно бесполезным в таком случае.
Итак, давайте предположим типичное Сотрудник / Отдел отношение. Сотрудник связан с одним Отделом . Отдел может иметь ноль или несколько Сотрудников .
Предположим, супер простые модели:
public class Department {
private String name;
// something like...
private List<Employee> employees;
}
public class Employee {
private String name;
// something like...
private Department department;
}
Теперь в моем REST API мне нужно несколько довольно базовых функций:
- получить список всех отделов
- получить список всех сотрудников, но он должен содержать название отдела для каждого сотрудника
- получить список сотрудников для выбранного отдела
Так как бы вы решили это с MongoDB? Я также использую Spring Boot с Spring Data, но я думаю, что это не имеет большого значения.
Я сталкивался с разными подходами, но все они мне кажутся очень плохими. Встраивание отдела внутри сотрудника сделает невозможным получение списка всех отделов или сотрудников одного отдела. Встраивание сотрудников в отдел сделает невозможным получение списка всех сотрудников. Использование @ DbRef будет имитировать отношение, но как тогда получить список сотрудников, включая названия отделов, без вызова REST API для каждого сотрудника?
В последнее время я прочитал довольно много учебных пособий, руководств и обсуждений StackOverflow, но я не нашел приемлемого ответа. Действительно ли возможно, что MongoDB не может решить такую сверхпростую проблему? Это даже не проблема , это скорее стандарт - обычная ситуация в окружающем нас мире.
спасибо