Приветствую. Есть вот такой код, который ищет по одному или двум текстовым полям, зависит от инпута пользователя.
const query = {
a: ["some value"]
}
await this.FileModel.find(
query,
null,
{ limit: 50, skip: skipValue },
)
.lean()
.sort({ file_create_time: -1 })
.lean();
Все заключается в том, что с индексацией этот код работает довольно быстро, но есть несколько моментов, которые очень замедляют реквесты:
1. Если пролистать до старых страниц, допустим до 5000 страницы, то это происходит очень долго(примерно 10 секунд, даже с индексацией)
2. Count работает супер медленно, если брать загрузку самых свежих страниц, без него они загружаются за 15мс, но при использовании count (даже при условии того, что кол-во страниц ограниченно 5000, больше не нужно), задержка увеличивается до 3-5 секунд
Еще важно отметить то, что все очень медленно, при поиске по одному значению. По двум, все также происходит быстро.
Вот код вызова count():
await this.FileModel.find(query, null, {
sort: { file_create_time: -1 },
limit: 5000 * 50,
})
.count()
Код индексации:
FileSchema.index({
a: 1,
b: 1,
});
Как этот момент можно оптимизировать?