我有一个名为lists的模型,它有一个名为 item_ids
. item_ids
是一个json列(mysql),该列包含uuid数组,每个uuid引用一个项。
现在,当有人创建一个新的列表时,我需要搜索是否存在一个具有相同uuid集的现有列表,并且我希望使用查询本身来执行此搜索以获得更快的响应。也尽可能使用activerecord查询。
我如何做到这一点?
item_ids = ["11E85378-CFE8-39F8-89DC-7086913CFD4B", "11E85354-304C-0664-9E81-0A281BE2CA42"]
v = List.new(item_ids: item_ids)
v.save!
现在,如何检查是否存在项ID与查询中提到的项ID完全匹配的列表?跟随行不通。
list_count = List.where(item_ids: item_ids).count
编辑1
List.where("JSON_CONTAINS(item_ids, ?) ", item_ids.to_json).count
此语句有效,但即使只有一个项匹配,它也会计数。寻找确切数量的物品。
编辑2
List.where("JSON_CONTAINS( item_ids, ?) and JSON_LENGTH(item_ids) = ?", item_ids.to_json, item_ids.size).count
看来这很管用
1条答案
按热度按时间nnvyjq4y1#
您可以实现一个列表和项目之间有很多关系的系统,然后像这样访问。
list.includes(:item).where('items.id in(?),item\u id)
实施有很多关系:
http://guides.rubyonrails.org/association_basics.html#the-通过交往有很多