У меня есть коллекция монго около 5 ГБ, которая содержит около 200 тыс. Документов. У каждого из них есть имя, валюта и дата, а затем большая строка (это данные, которые меня интересуют), что дает каждому документу общий размер около 5 МБ.
Моя проблема в том, что мне нужно как можно быстрее найти определенное имя и валюту для 250 различных дат.
В настоящее время я использую
db.collection.find(
{'name': somename, 'currency': mycurrency,
'valuation_date': {'$in': [list_of_250_datetime_datetime]}
}) [see more detailed query in the update below]
В настоящее время скорость весьма разочаровывает, так как кажется, что я загружаю только около 10 документов в секунду, когда я запускаю сервер mongod на своем локальном хосте.
Я также добавил индексы для имени, валюты и даты, а также для составного индекса. Добавление индексов делает это примерно на 25% быстрее.
Что еще я могу сделать, чтобы ускорить загрузку этих документов из mongodb?
Стоит отметить: документы не могут быть разделены, так как мне нужна большая строка данных для каждой даты / имени / валюты, и я не могу контролировать эту часть.
Любые предложения приветствуются.
UPDATE:
Вот более подробный профиль происходящего:
Вот полный запрос:
Предполагается, что при использовании Pymongo для 916 записей потребуется около 94 секунд, а при первых 100 записях в студии 3t - около 6 секунд.
db.ForecastCurveId.find({
'Ccy': 'USD', 'Class': 'ForecastCurveId',
'Index': 'LIBOR', 'Tenor': '12M',
'source': {'$in': ['ods']},
'valuation_date': {'$gte': new Date("2015-11-09"), '$lte': new Date("2016-11-07")}})
здесь профиль, если я использую pymongo: