【问题标题】:get values in JSONB by multiple keys PostgreSQL通过多个键获取 JSONB 中的值 PostgreSQL
【发布时间】:2021-11-23 02:10:17
【问题描述】:

我在数据库中有 JSONB,我需要获取数组中的键和值,键可以更改。

示例 JSONB -

{"key": "test2", "key1": "value", "key2": "value1", "key3": "value2", "key4": "value5", "name": "test"}

我试过了

    '@Query(value = "SELECT d.key, d.value " +
            " FROM Table table" +
            " JOIN jsonb_each_text(table.data) d ON true " +
            " WHERE table.type = ?1 AND table.time BETWEEN ?2 AND ?3"+
            " AND d.key IN ?4" , nativeQuery = true)
    List<Object>findByData(String type, Long from, Long to, String[] keys);'

得到了,

    [
    [
        "key",
        "test2"
    ],
    [
        "key1",
        "value"
    ],
    [
        "name",
        "test"
    ]]

但我需要

  [{
      "key":"test2",
      "key1:"value",
      "name":"test"
  }]

如果您有任何想法,请提供帮助。也许有办法改变请求?

【问题讨论】:

    标签: java spring-data-jpa jsonb postgresql-9.5


    【解决方案1】:

    尝试将您的列表转换为包含所有键和值的映射。

    
        // get list of object
        var listOfObjectThatSimulatefindByData = new ArrayList<>(
                        List.of(
                            new Object[]{"key1","value1"}, // any row in database
                            new Object[]{"key2","value2"}  // any row in database
                                )
                        );
    
        // collect all list into map
        var mapYouNeed = listOfObjectThatSimulatefindByData.stream()
                                                    .collect(
                                                        Collectors.toMap(obj -> obj[0] , obj -> obj[1])
                                                        );
    
    
        // print
        System.out.println(mapYouNeed);
    
    
    

    我们会得到这个输出:

    {
    key1=value1, 
    key2=value2
    }
    

    【讨论】:

    • 不幸的是我不能手动指定键或值,它需要在没有明确定义的情况下工作。但是非常感谢您的努力
    猜你喜欢
    • 1970-01-01
    • 2017-06-23
    • 2018-04-13
    • 2020-12-13
    • 1970-01-01
    • 2022-07-02
    • 2018-08-02
    • 1970-01-01
    • 2018-06-23
    相关资源
    最近更新 更多