Монго сортировка с нумерацией страниц

У меня есть необходимость реализовать пейджинг в моем mongodb коллекция. Это пример документа в моей коллекции

{
  "_id" : "<Mongo Generated>",
  "category" : "abc",
  "createdDate" : "<Date of creation of the document>",
  "markedDate" : "<Date when the document is marked 
               (marking is an activity that is done via my application>"
}

Это мое требование:

  1. Мне нужно получить все документы в категории "abc", однако на страницах по 10 документов на страницу
  2. Пейджинг должен быть сделан только после того, как документы отсортированы - я должен отсортировать документы по markedDate (По убыванию) сначала, потом createdDate (По убыванию)
  3. Ограничение 10 результатов должны быть применены
  4. Я должен иметь возможность перейти на любую страницу в зависимости от номера страницы, которая входит в ввод

Я попытался выполнить следующий запрос для сортировки результатов с использованием агрегата:

db.getCollection('testcollection').aggregate(
   {$match:{"category" : "abc"}}, 
   {$sort:{markedDate: -1, createdDate : -1}
})

Тем не менее, как я могу страницу? Я могу использовать опцию skip + limit, однако перед публикацией этого вопроса я просмотрел несколько постов, и это не рекомендуется для больших наборов данных. Я ожидаю, что в моей коллекции будет около 75000 документов.

Кроме того, поскольку моя дата хранится в формате даты ISO, я вижу, что видимость только на уровне секунд. У меня может быть 2 документа, созданные в одну секунду.

Как лучше всего отобразить мои результаты без ущерба для производительности?

Пожалуйста, порекомендуйте.

1 ответ

Как насчет использования функции сортировки напрямую

db.testcollection.find({}).sort({createdDate:-1}).skip(1).limit(10)
Другие вопросы по тегам