2013-06-26 2 views
0

Каков наиболее эффективный способ найти первый и последний документы, соответствующие запросу? Возможно, существует большое количество документов, соответствующих запросу.Найдите первый и последний документы, соответствующие запросу?

(? Почему я пытаюсь найти самые старые и новые документы, которые соответствуют моим критериям поиска.)

ответ

2

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

+0

+1: 35 секунд ... ;-) – mnemosyn

+0

Очень ценим! Один для вас. –

2

С count и skip стоят дорого, я считаю, что лучше всего выполнить два запроса с разным порядком сортировки. Есть еще один обратный ход, но индексированные запросы с limit действительно быстрые.

Прикосновение к старым данным очень часто может быть проблемой, потому что это заставляет монго хранить старые вещи в памяти. Возможно, вам захочется кэшировать эти самые старые результаты, если они несколько стабильны и общий объем данных велик. Но если ваши шаблоны запросов сложны, кеширование не поможет, я думаю.