Как правило, вам нужно добавить индексы для полей, по которым вы хотите отсортировать.Ошибка возникает из-за отсутствия индекса на orderId
, который MongoDB мог бы использовать, а это означает сортировку результатов в памяти.Это работает для небольшого объема данных, но в этом случае это не так, потому что есть ограничение памяти (32 МБ) на то, сколько памяти можно использовать во время операции.Попробуйте добавить следующий индекс:
db.my_collection.createIndex({ status: 1, orderId: -1 }, { background: true })
Это должно помочь вам как в поиске по status
, так и в сортировке.Обратите внимание, что индекс будет использоваться эффективно, даже если сортировка основана на не префиксном подмножестве.Это потому, что первая часть запроса включает сравнение равенства первого ключа.Больше на Использование индексов для сортировки результатов запроса .