我想弄清楚某些类型的文章的数量。我有一个非常低效的查询:ActiveRecord查询数组交集?
Article.where(status: 'Finished').select{|x| x.tags & Article::EXPERT_TAGS}.size
在我的追求成为一个更好的程序员,我不知道如何使这个更快的查询。 tags
是一个字符串在Article
阵列,并且Article::EXPERT_TAGS
是字符串的另一个阵列。我想找到数组的交集,并得到结果记录数。编辑:Article::EXPERT_TAGS
和article.tags
定义为Mongo数组。这些数组包含字符串,我相信它们是序列化的字符串。例如:Article.first.tags = ["Guest Writer", "News Article", "Press Release"]
。不幸的是,这不是作为一个单独的标签表正确设置的。
第二次编辑:我使用的是MongoDB,所以实际上它使用MongoMapper或mongoid等MongoWrapper,而不是ActiveRecord。这是我的错误,对不起!由于这个错误,它把这个问题的分析搞砸了。感谢PinnyM指出错误!
如何被存储在数据库中的这个阵列串 - 作为一个单独的表(表模式,请)或Array场?你在用什么DBMS? – PinnyM
我看起来约翰通过序列化数组来存储'tags'列表(@John,请保持诚实) –
这是作为一个数组存储在MongoDB中的一个列中,而不是一个单独的表(这将使回顾过程中的生活变得更容易)。 – John