Сортировка и разбиение на страницы после запроса списка подмассива - PullRequest
0 голосов
/ 18 марта 2020

У меня есть список заказов пользователя, который хочет получить из БД. В каждом списке inf порядка было свойство match , которое представляет собой массив объектов (называемый порядком соответствия). Предположим, что порядок сопоставления имеет 2 свойства: id и creationAt . Теперь я хочу получить все совпадающие заказы в списке заказов, отсортированные по createAt, а затем разбить их на соответствующие страницы, ограничив параметры запроса. Мое старое решение : запросить весь список заказов пользователя, а затем получить все соответствующие заказы, отсортировать их и, наконец, использовать метод slice для разбивки на страницы. Поначалу это выглядит нормально, потому что у меня еще не было много заказов. Но теперь я сталкиваюсь с ошибкой Mon go: 32 МБ для сортировки в памяти - подробное описание Ошибка исполнителя при выполнении команды поиска :: вызвано :: использована операция сортировки больше, чем максимум 33554432 байт оперативной памяти. Добавьте индекс или укажите меньший лимит. Я исследовал эту ошибку и, возможно, мне следует проиндексировать свойство match, но я думаю, что моя большая проблема - мои запросы.

Пример списка заказов в БД:

[{
 orderId: 1,
 match: [
  { id: 1, createdAt: 1 },
  { id: 2, createdAt: 6 },...]
},
{  
 orderId: 2,
 match: [
  { id: 3, createdAt: 4 },
  { id: 4, createdAt: 3 }, ...]
 }
]
==> expected: [ { id: 1, createdAt: 1 }, { id: 4, createdAt: 3 },
  { id: 3, createdAt: 4 },{ id: 2, createdAt: 6 }]

...