1

Model.find(array_of_ids)在 mongodb 中使用 mongoid 驱动器的性能很差,我不明白为什么。

相关代码:

ids = get_ids() #Get an array of 137 _ids for Topic model.
Topic.find(ids) #Find all data, but take 4 seconds to do it.

_id 字段是自动索引的,因此不需要任何手动配置。

那么,为什么这么慢呢?

请询问您是否需要更多解释,并为我糟糕的英语感到抱歉。

4

1 回答 1

0

似乎你已经得到了解决方案。

我只是想补充一下。

如果 id 可以达到 137,我认为您应该将关系存储在 Topic 集合中。情况恰恰相反。查询将是

Topic.where(:id => self.topic_id)

其中 self 指的是该模型的记录。

它实际上是 has_many 和 belongs_to 关系。

Mongodb 存储数组的能力,并不意味着对于与其他模型关联的那么多(137)条记录,您可以以这种方式存储。关系方法更好。如果数据类型与其他模型/集合无关,只需将某些内容放入数组中。例如,主题标签可能是“时尚、青少年、幼稚、俗气等,您没有预定义标签,而是由您的用户定义。这是在 mongodb 中使用数组功能的好机会。

对于数组包含主题列表的情况,其中主题是在主题集合中定义的数据,应该使用关系模型。

只是一些建议,请不要投票给我。

于 2013-08-25T10:44:40.650 回答