我想弄清楚某些類型的文章的數量。我有一個非常低效的查詢: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