我有一个Objective模型,该模型具有称为标签的属性,其值是数组数据类型。我需要查询所有其labels属性具有某个特定数组中存在的值的Objectives。
例如: 我有一个数组
a = ["textile", "blazer"]
Objective.labels
的值可能为["textile, "ramen"]
我需要返回所有可能将“纺织品”或“开拓者”作为其标签数组值之一的目标
我尝试了以下操作:
Objective.where("labels @> ARRAY[?]::varchar[]", ["textile"])
这将返回一些记录。现在,当我尝试
Objective.where("labels @> ARRAY[?]::varchar[]", ["textile", "Blazer"])
我希望它返回包含至少一个标签数组值的所有Objectives作为Textile或Blazer。
但是,它返回一个空数组。有解决方案吗?
答案 0 :(得分:1)
尝试使用&&
重叠运算符。
重叠(具有相同的元素)
Objective.where("labels && ARRAY[?]::varchar[]", ["textile", "Blazer"])
如果您有很多行,则GIN索引可以加快速度。