当前位置: 首页 > 知识库问答 >
问题:

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

姚韬
2023-03-14
# info about my PostgreSQL version
select version()
> PostgreSQL 10.6 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11), 64-bit
# create table
create table tx (id bigserial primary key, msg jsonb not null);

# create index on 'type' value of msg column
create index on tx using gin ((msg->'type'));
insert into tx (msg) values
('[{"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" }}]');

>

  • 检查Postgres JSON数组是否包含字符串

    在postgreSQL中从表中查询json对象

    带有嵌入JSON对象的PostgreSQL JSON查询

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

    我将提供任何可能需要的信息来解决这个问题。

  • 共有1个答案

    韩喜
    2023-03-14

    官方的Postgresql文档包含您所需的所有内容。

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

    1. 如何查询列msg包含的数据,其中类型的键值为msgsend?
    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;
    
     类似资料:
    • 问题内容: 我使用 PostgreSQL 9.5 和Rails5。我想查询下面显示的包含JSON对象数组的列,以返回包含并执行计数的所有JSON数组元素。我使用 的 SQL 显示在json数据下方。运行查询只会返回一个空数组。 这是我的数据: 我想要其中一个sql查询返回: 和另一个查询以返回数组,以便我可以在应用程序中对其调用count,还可以遍历它以创建表单: 我试过这个SQL查询: 我也试过

    • 我使用PostgreSQL 9.5和Rails 5。我想查询下面显示的包含JSON对象数组的jsonb列,以返回包含的所有JSON数组元素,并执行计数 我使用的SQL显示在json数据下面。运行查询只返回一个空数组。 我尝试了这里和这里建议的查询。 这就是我的jsonb数据的样子: 我希望其中一个sql查询返回: 和另一个返回数组的查询,以便我可以在我的应用程序中调用count并循环使用它来创建表

    • 如何返回特定日期所在的行号? 类似这样的事情:

    • 问题内容: 我有对象的Postgres JSONB数组,看起来像这样: 此JSONB是一个函数参数。 什么是最有效的检索方法 。 我尝试过玩,但是到目前为止我所做的一切看起来都非常混乱。 问题答案: 在 Postgres 9.4+中 ,可以在横向 联接中 使用该函数: 您可以通过一个简单的函数来实现该想法,例如: 在 Postgres 12+中, 您可以使用jsonb路径函数的形式来替代: Db

    • 如何查询同时包含键值对“key1”-“value1”和“key2”-“value2”的文档?我似乎找不到关于这个的任何文件。 我尝试了下面的查询,但它没有返回任何结果,即使应该有匹配的文档。虽然用should替换must是可行的,但当我将minimum_should_match=100%时,它也不会返回任何结果。 这是映射的外观: 非常感谢你的帮助。

    • 我有一个JSON对象,如下所示: 我想检查是否存在一个值为“id2”的id,java中是否有任何UTIL允许我这样做,而无需遍历所有对象并将字符串与目标进行比较? 附言:我不想知道“id”字段是否存在,使用JSONObject.has(键),这不是我要问的。