Я понимаю, что JOIN либо невозможны, либо не одобряются в базах данных документов. Я исхожу из опыта работы с реляционными базами данных и пытаюсь понять, как обрабатывать такие сценарии.
Допустим, у меня есть коллекция сотрудников, в которой я храню всю информацию, связанную с сотрудниками. Вот типичный документ сотрудника:
{
"id": 1234,
"firstName": "John",
"lastName": "Smith",
"gender": "Male",
"dateOfBirth": "3/21/1967",
"emailAddresses":[
{ "email": "[email protected]", "isPrimary": "true" },
{ "email": "[email protected]", "isPrimary": "false" }
]
}
Допустим также, что у меня есть отдельная коллекция Projects, в которой я храню данные проекта, которые выглядят примерно так:
{
"id": 444,
"projectName": "My Construction Project",
"projectType": "Construction",
"projectTeam":[
{ "_id": 2345, "position": "Engineer" },
{ "_id": 1234, "position": "Project Manager" }
]
}
Если я хочу вернуть список всех моих проектов вместе с проектными группами, как мне убедиться, что я возвращаю всю соответствующую информацию о лицах в команде, т. е. полные имена, адреса электронной почты и т. д.?
Это два отдельных запроса? Один для проектов, а другой для людей, чьи идентификаторы появляются в коллекции проектов?
Если да, то как мне вставить данные о людях, т.е. полные имена, адреса электронной почты? Должен ли я затем выполнять цикл foreach в своем приложении для обновления данных?
Если я полагаюсь на свое приложение для заполнения всех соответствующих данных, не будет ли это ударом по производительности, который компенсирует преимущества производительности баз данных документов, таких как MongoDB?
Спасибо за вашу помощь.