首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何通过哈希值在JSON哈希数组中进行搜索?

如何通过哈希值在JSON哈希数组中进行搜索?
EN

Stack Overflow用户
提问于 2016-10-06 20:01:33
回答 3查看 8.1K关注 0票数 10

我使用Postgres的JSON数据类型来存储一些信息。

例如,我有一个带有字段locations的模型User,其中包含一个json文档(包含键和值对的对象数组),格式如下:

代码语言:javascript
复制
[{"name": "Location 1", kind: "house"},
 {"name": "Location 2", kind: "house"},
 {"name": "Location 3", kind: "office"},
 ...
 {"name": "Location X", kind: "house"}
]

我想用.where查询JSON数据类型。

我要查询至少有一个位置具有kind = office的用户。

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2018-12-18 05:12:29

我已经使用了以上答案的混合。这是我的工作代码:

代码语言:javascript
复制
User.where("locations::jsonb @> ?", [{kind: 'office'}].to_json)

注意,locationsUser表的JSON列(不是JSONB数据类型)

票数 5
EN

Stack Overflow用户

发布于 2018-08-06 18:18:07

来源:https://www.postgresql.org/docs/current/static/functions-json.html

代码语言:javascript
复制
User.where("name::jsonb -> 'location' ->> 'kind' = ?", 'office')
票数 3
EN

Stack Overflow用户

发布于 2018-04-03 23:37:33

我只想说两点:

我有一个模型,里面有一个JSON,里面有一个键和一个数组,所以它看起来像这样:

代码语言:javascript
复制
ModelObj: attribute: { key: [val0, val1, val2, val3] }

我需要找到所有对象,例如,在数组中键具有val3的属性。我将我的属性类型更改为jsonb,我是这样找到它的:

代码语言:javascript
复制
Model.where('attribute @> ?', {key: ['val3']}.to_json)

也许这对外面的人很有用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39895445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档