В настоящее время в нашей системе есть две отдельные коллекции: invites
и users
.Таким образом, мы можем отправить кому-то invite
, и к этому invite
будет прикреплена некоторая информация, которая будет сохранена в коллекции invites
.Если user
регистрирует свою учетную информацию, она сохраняется в коллекции users
.
Не каждый user
должен иметь invite
, и не каждый invite
должен иметь user
,Мы проверяем, есть ли у user
invite
(или наоборот) по адресу email
, который в этом случае хранится в обеих коллекциях.
Изначально на нашей панели инструментов у нас был обзор пользователя, на которой есть страница, где вы можете видеть текущих пользователей и разбивать страницы между ними.
Теперь нам нужна одна страница (и одна таблица), в которой мы можем просматривать как приглашения, так и пользователей и разбивать их на страницы.
Допустим, наши данные выглядят так:
invites: [
{ _id: "5af42e75583c25300caf5e5b", email: "john@doe.com", name: "John" },
{ _id: "53fbd269bde85f02007023a1", email: "jane@doe.com", name: "Jane" },
...
]
users: [
{ _id: "53fe288be081540200733892", email: "john@doe.com", firstName: "John" },
{ _id: "53fd103de08154020073388d", email: "steve@doe.com", firstName: "Steve" },
...
]
Примечания.
- Некоторые пользователи могут быть сопоставлены с приглашением по электронной почте (но это не обязательно)
- Некоторые приглашения никогда не регистрируются
- Имена полей не всегдаточно такой же
Можно ли составить нумерованный список всех emails
и отсортировать по ним?Таким образом, если есть email
, который начинается с a
в коллекции invites
, он выбирается перед email
, который начинается с b
в коллекции users
и т. Д. И затем используется offset
/limit
до paginate
через него.
По сути, я хочу "объединить" две коллекции в нечто, похожее на представление MySQL, и иметь возможность запрашивать это, как если бы вся эта вещь была одной коллекцией.
Я предпочитаю искать решение, не меняя структуру данных в коллекции (как проецируемое изображение или что-то в этом роде).Но части кода уже полагаются на данную структуру.Что в свете этого нового требования не может быть лучшим подходом.