json对象中包含特定键值的PostgreSQL查询行

json对象中包含特定键值的PostgreSQL查询行,sql,postgresql,postgresql-9.3,jsonb,Sql,Postgresql,Postgresql 9.3,Jsonb,我有一个名为tx的示例表,它存储有关事务的信息,我使用的是postgresql10.6 关于我的PostgreSQL版本的信息 选择版本 >x86_64-pc-linux-gnu上的PostgreSQL 10.6,由gcc gcc 4.8.5 20150623 Red Hat 4.8.5-11编译,64位 看起来是这样的: 创建表 创建表tx id bigserial主键,msg jsonb not null; 在msg列的“type”值上创建索引 使用gin msg->“type”在tx上创建

我有一个名为tx的示例表,它存储有关事务的信息,我使用的是postgresql10.6

关于我的PostgreSQL版本的信息 选择版本 >x86_64-pc-linux-gnu上的PostgreSQL 10.6,由gcc gcc 4.8.5 20150623 Red Hat 4.8.5-11编译,64位 看起来是这样的:

创建表 创建表tx id bigserial主键,msg jsonb not null; 在msg列的“type”值上创建索引 使用gin msg->“type”在tx上创建索引; 将行插入tx表

插入到tx msg值中 “[{type:MsgSend,value:{amount:[{denom:dollar,amount:100}],from:Jeniffer,to:James}]”, “[{type:MsgSend,value:{amount:[{denom:dollar,amount:30}],from:Jeniffer,to:James}]”, “[{type:MsgBuy,value:{amount:[{denom:dollar,amount:10}],from:George,to:Smith}]”, “[{type:MsgSend,value:{amount:[{denom:dollar,amount:60}],from:Jeniffer,to:James}]”; 我读过这篇文章,搜索过类似的文章,并用任何给定的例子进行了测试,但它们似乎不能很好地指导我解决我试图完成的问题,即查询json对象中的行,而不是json数组

这些帖子

如何实现这些查询?我相信如果我知道如何质疑一个问题,那么我就能解决其他问题

如何查询msg列包含类型为MsgSend的键值的数据

如何查询msg列包含from键值为Jeniffer的数据

如何查询msg列包含MsgSend且金额大于50的数据

我将提供解决此问题所需的任何信息。

官方包含您所需的所有信息

根据您的问题,请参见以下查询:

如何查询msg列包含类型为MsgSend的键值的数据? 如何查询msg列包含from键值为Jeniffer的数据? 如何查询msg列包含MsgSend且金额大于50的数据?
9.3不再受支持,JSON支持从那时起得到了提升。使用更新的版本。为什么要将JSON对象包装在长度为1的免费数组中?你能解决这个问题吗,还是不可以商量?@jjanes谢谢你的评论。这是不可谈判的。看起来Tomer Sela在下面回答了,这是我需要知道的。
select * from tx where msg->0->>'type' = 'MsgSend';
select * from tx where msg->0->'value'->>'from' = 'Jeniffer';
select * from tx where (msg->0->'value'->'amount'->0->>'amount')::int > 50;