2014-09-28 5 views
-1

Для того, чтобы показать последние 10 новостей пользователя Моего приложения забирающего все новости из новостей коллекции, а затем я сортируя их на поле даты документа и отображение их топ 10.последние 50 документов из MongoDB

Это было прекрасно когда у меня было 100-1000 новостей, новости в коллекции выросли, и она растет. Я хочу получить последние новости (может быть 20, 50 или 100), которые можно узнать из поля даты или на основе последних t вставленных документов, если что-то вроде этого поддерживается)

Есть ли способ достичь это в MongoDB. Его в основном для улучшения производительности поиска?

Примечание. Я не говорю о том, чтобы получить 10 документов. Я имею в виду последние 10 (t) записей.

ответ

0

Именно поэтому limit и sort есть.

db.news.find().sort({timeField : 1}).limit(10); если у вас есть какое-то поле отметки времени db.news.find().sort({$natural : -1}).limit(10); если вы хотите на основе последней вставлено

+0

'db.news.find(). Sort ({$ natural: 1}). Limit (10);' должно быть 'db.news.find(). Sort ({$ natural: -1}). limit (10); ' – Wizard

+0

@Wizard спасибо и извините. –

+0

Я сомневаюсь, что первым также должен быть '{timeField: -1}'? :) – Wizard

0

Ну после того, как много просмотра я нашел Сортировку и лимит, что мне нужно. Мало того, что нужно иметь в виду. Сортировка Хорошо работает с индексами в mongodb, поэтому лучше создайте его, если вы уверены в том, какое поле вам нужно для сортировки, что повышает производительность. Также укажите ограничение по размеру, которое зависит от доступной ОЗУ. Порядок сортировки и лимита не имеет значения. Как было сказано выше, $ natural - это поле, которое помогает сортировать по порядку, в котором данные вставляются в mongodb.

Смежные вопросы