ruby-on-rails - Active Record Array 数组查询 - 检查数组中存在的记录
问题描述
我有一个目标模型,它有一个称为标签的属性,其值是数组数据类型。我需要查询其标签属性具有某些特定数组中存在的值的所有目标。
例如:我有一个数组
a = ["textile", "blazer"]
的Objective.labels
值可能为["textile, "ramen"]
我需要返回所有可能将“纺织品”或“西装外套”作为标签数组值之一的目标
我尝试了以下方法:
Objective.where("labels @> ARRAY[?]::varchar[]", ["textile"])
这会返回一些记录。现在当我尝试
Objective.where("labels @> ARRAY[?]::varchar[]", ["textile", "Blazer"])
我希望它返回所有包含至少一个标签数组值作为纺织品或西装外套的目标。
但是,它返回一个空数组。任何解决方案?
解决方案
尝试&&
重叠运算符。
重叠(有共同的元素)
Objective.where("labels && ARRAY[?]::varchar[]", ["textile", "Blazer"])
如果您有很多行,GIN 索引可以加快速度。
推荐阅读
- mysql - 将两行合并为具有相同列的一行并添加列值
- amazon-web-services - Terragrunt - 如何在同一模块中使用输出值
- android - 尝试在 Firebase 上的实时数据库上获取对象时获取空数组列表
- javascript - 致敬.js中这个回调参数是什么意思?
- php - 如何创建自定义排序并保存
- flutter - 未定义命名参数
- outlook - 如果从 .msg 文件打开 IMessage,则 IMessage::CopyTo 返回 MAPI_E_NO_ACCESS
- ios - 如何确定 MKCoordinateRegion 是否在另一个 MKCoordinateRegion 中
- python - 如果在 python 中,在 int 内增加 int
- android - 在android中获取位置(回调问题)