У меня есть список заказов пользователя, который хочет получить из БД. В каждом списке 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 }]