gpt4 book ai didi

ruby-on-rails - ActiveRecord 查询数组交集?

转载 作者:可可西里 更新时间:2023-11-01 10:44:11 26 4
gpt4 key购买 nike

我正在尝试计算某些类型文章的数量。我有一个非常低效的查询:

Article.where(状态:'完成').select{|x| x.tags & Article::EXPERT_TAGS}.size

为了成为更好的程序员,我想知道如何使查询更快。 tagsArticle中的一个字符串数组,Article::EXPERT_TAGS是另一个字符串数组。我想找到数组的交集,并获得结果记录数。

编辑:Article::EXPERT_TAGSarticle.tags 被定义为 Mongo 数组。这些数组包含字符串,我相信它们是序列化的字符串。例如:Article.first.tags = ["Guest Writer", "News Article", "Press Release"]。不幸的是,这没有正确设置为单独的标签表。

第二次编辑:我使用的是 MongoDB,所以实际上它使用的是 MongoWrapper,如 MongoMapper 或 mongoid,而不是 ActiveRecord。这是我的错误,抱歉!因为这个错误,搞砸了这道题的分析。感谢 PinnyM 指出错误!

最佳答案

由于您使用的是 MongoDB,因此您还可以考虑针对数组交集使用 MongoDB 特定的解决方案(聚合框架),这样您就可以让数据库在获取最终结果之前完成所有工作。

查看此 SO 线程 How to check if an array field is a part of another array in MongoDB?

关于ruby-on-rails - ActiveRecord 查询数组交集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18831485/

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