Монго сортировка с нумерацией страниц
У меня есть необходимость реализовать пейджинг в моем 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>"
}
Это мое требование:
- Мне нужно получить все документы в категории "
abc
", однако на страницах по 10 документов на страницу - Пейджинг должен быть сделан только после того, как документы отсортированы - я должен отсортировать документы по
markedDate
(По убыванию) сначала, потомcreatedDate
(По убыванию) - Ограничение 10 результатов должны быть применены
- Я должен иметь возможность перейти на любую страницу в зависимости от номера страницы, которая входит в ввод
Я попытался выполнить следующий запрос для сортировки результатов с использованием агрегата:
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)