我使用Postgres的JSON数据类型来存储一些信息。
例如,我有一个带有字段locations
的模型User
,其中包含一个json文档(包含键和值对的对象数组),格式如下:
[{"name": "Location 1", kind: "house"},
{"name": "Location 2", kind: "house"},
{"name": "Location 3", kind: "office"},
...
{"name": "Location X", kind: "house"}
]
我想用.where
查询JSON数据类型。
我要查询至少有一个位置具有kind = office
的用户。
谢谢!
发布于 2018-12-18 05:12:29
我已经使用了以上答案的混合。这是我的工作代码:
User.where("locations::jsonb @> ?", [{kind: 'office'}].to_json)
注意,locations
是User
表的JSON
列(不是JSONB
数据类型)
发布于 2018-08-06 18:18:07
来源:https://www.postgresql.org/docs/current/static/functions-json.html
User.where("name::jsonb -> 'location' ->> 'kind' = ?", 'office')
发布于 2018-04-03 23:37:33
我只想说两点:
我有一个模型,里面有一个JSON,里面有一个键和一个数组,所以它看起来像这样:
ModelObj: attribute: { key: [val0, val1, val2, val3] }
我需要找到所有对象,例如,在数组中键具有val3的属性。我将我的属性类型更改为jsonb,我是这样找到它的:
Model.where('attribute @> ?', {key: ['val3']}.to_json)
也许这对外面的人很有用。
https://stackoverflow.com/questions/39895445
复制相似问题