我有一个大约5GB的mongo集合,其中包含大约20万个文档。每个文件都有一个名称,货币和日期,然后是一个大字符串(这是我感兴趣的数据),每个文件的总大小约为5MB。
我的问题是我需要尽快找到250个不同日期的特定名称和货币。
我正在使用
db.collection.find(
{'name': somename, 'currency': mycurrency,
'valuation_date': {'$in': [list_of_250_datetime_datetime]}
}) [see more detailed query in the update below]
当前速度非常令人失望,因为当我在本地主机上运行mongod服务器时,似乎每秒只能下载约10个文档。
我还添加了名称,货币和日期的索引,以及复合索引。添加索引可使速度提高约25%。
还有什么我可以做的,以加快从mongodb加载这些文档的速度?
值得注意的是:无法拆分文档,因为我需要每个日期/名称/货币的大数据字符串,并且我对该部分无权控制。
任何建议都值得赞赏。
更新:
这是正在发生的事情的更详细的资料:
这里是完整的查询: Pymongo大约需要916秒才能处理94秒,而3t studio的前100个要花费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")}})