все равно сначал ищет по всей коллекции, а потом уже производит скип\лимит. Условие "за последние сутки" тоже не помогает.
А хотелось бы чтобы он искал сразу без части коллекции. Такое возможно?
const findLast = async uid => {
const count = 409583
const now = new Date()
const start = new Date(now.getTime() - (24 * 60 * 60 * 1000))
return await Track.find({ uid, createdAt: { '>' : start} })
.skip(count - 100)
.limit(1)
}
если кому интересно, то я решил проблему. Сделал индексы по полю uid :) До этого в базе из 400к записей было несколько запросов в секунду по этому полю и процессор грузился на 60%. Теперь 1.5%
Обсуждают сегодня