все равно сначал ищет по всей коллекции, а потом уже производит скип\лимит.  Условие "за последние сутки" тоже не помогает.
                  
                  
                  
                  
                  
                  А хотелось бы чтобы он искал сразу без части коллекции. Такое возможно?
                  
                  
                  
                  
                  
                  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%
Обсуждают сегодня