gpt4 book ai didi

ruby-on-rails - Ruby map/collect 在大型 Mongoid 集合上运行缓慢

转载 作者:太空宇宙 更新时间:2023-11-03 18:17:39 25 4
gpt4 key购买 nike

我有一个 Mongoid 集合,我在其上运行 where 查询。

现在,我想构建一个数组,其中包含集合中所有文档的特定字段的值。

例如如果我的 Monogid 模型是

class Foo
field :color, type: String
end

我想做这样的事情-

red_ducks = Foo.where(color: 'red')
red_duck_ids = red_ducks.map(&:_id)

不幸的是,当查询结果很大时需要很长时间。例如,在我的案例中,10,000 个文档需要 6 秒。

有什么办法可以加快速度吗?

最佳答案

你不能只在你的范围内使用 _id 作为属性调用 distinct 吗?

red_duck_ids = Foo.where(color: 'red').distinct(:_id)

这将向您返回满足您条件的所有 _id 的列表。您可以在 Mongo's distinct documentation 上找到更多信息.

你也可以看看only如果您使用的是 3.1 或更新版本,您还可以使用 Criteria#pluck .

关于ruby-on-rails - Ruby map/collect 在大型 Mongoid 集合上运行缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23492543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com