Учтите, у меня есть две коллекции в MongoDB.Один для продуктов с такими документами, как:
{'_id': ObjectId('lalala'), 'title': 'Yellow banana'}
А другой хранит изменения цен с такими документами, как:
{'product': DBRef('products', ObjectId('lalala')),
'since': datetime(2011, 4, 5),
'new_price': 150 }
Один продукт может иметь много ценовых изменений.Цена длится до нового изменения с более поздней отметкой времени.Я думаю, вы поймали идею.
Скажи, у меня есть 100 продуктов.Я хочу запросить мою БД, чтобы узнать, какова цена каждого продукта на момент 9 июня 2011 года. Какой самый эффективный (быстрый) способ выполнить этот запрос в MongoDB?Предположим, у меня нет решения для кеша или кеш пуст.
Я думал о group
операторе для коллекции prices
, где функция Reduce выбрала бы последнюю since
перед предоставленной датой, группируя по product.$id
.Но в этом случае я не воспользуюсь индексом для поля since
, и все документы будут отсканированы.
Есть идеи?