0
考虑我在MongoDB中有两个集合。一个产品的文件,如:查询MongoDB最后的项目
{'_id': ObjectId('lalala'), 'title': 'Yellow banana'}
,另一个类似的文件存储的价格变化:
{'product': DBRef('products', ObjectId('lalala')),
'since': datetime(2011, 4, 5),
'new_price': 150 }
一个产品可以有多个价格的变化。价格持续到有新的更改并带有更新的时间戳。我想你已经发现了主意。
说,我有100个产品。我想查询我的数据库,以了解2011年6月9日那一刻每种产品的价格。在MongoDB中执行此查询的最有效(快速)方式是什么?假设我没有缓存解决方案或缓存为空。
我想到了关于prices
集合的group
声明,其中reduce函数会在提供日期之前选择最后的since
,按product.$id
分组。但在这种情况下,我不会受益于since
字段上的索引,并且将扫描所有文档。
任何想法?
嗯,我认为这是一个很大的否定。它真的具有可比性:100个查询有1个项目,1个查询有100个项目? – nkrkv
我最初是为了团队选项而去的,而且速度非常慢。在同样的任务下比mySQL慢很多。我甚至没有想过要尝试为每个项目设置一个查询,直到Mongo邮件列表中的某个人建议它。令我惊讶的是它比mySQL更快。 – FlappySocks