Реализовать встроенный пейджинг с общим количеством страниц в mongodb - PullRequest
2 голосов
/ 16 февраля 2012

Я проверил старый вопрос , который связан с моей встроенной ситуацией подкачки.Хотя встроенный пейджинг с нарезкой работает нормально, решение total pages по-прежнему отсутствует, и мне интересно, возможно ли получить общий размер комментариев на стороне сервера.

Есть лиспособ запросить или посчитать размер встроенного массива на сервере без необходимости извлекать весь документ в мое приложение и считать его вручную?

Я не против сделать 2 запроса для этого, 1 для подкачки комментария, 1 для получения суммы комментариев.Если я смогу сделать это в одном запросе, это будет удивительно.

Кстати, я использую драйвер java и mongodb spring-data.

Пожалуйста, поделитесь своими мыслями.Спасибо!

1 Ответ

5 голосов
/ 16 февраля 2012

Лучший / самый быстрый способ получить общее количество вложенных документов - создать дополнительное поле и пересчитать количество после каждого обновления / вставки.Документ будет выглядеть следующим образом:

{
  _id: 1,
  comments: [],
  commentsCount: 5
}

Тогда вы можете просто включить поле commentsCount, когда делаете срез:

//this query will include only 10 comments _id and comments count of root document
db.articles.find({}, {comments:{$slice: [20, 10]}, _id:1, commentsCount: 1}) 

И на самом деле другого способа подсчета общего количества внедренных документов не существует.(я не говорю о м / р, потому что это медленно для запросов в реальном времени)

...