是否可以使用带有“?()”语法的JSONPath来过滤Redis中的对象(而不是数组)?

问题描述 投票:0回答:1

我正在使用 node-redis 库。我有 Redis 键:

test1
值:

{
    "requests": [
        {
            "requestId": "123",
            "requestType": "TYPE_1",
            "foo": "bar",
            "timestampS": 1230011000
        },
        {
            "requestId": "124",
            "requestType": "TYPE_1",
            "foo": "bar2",
            "timestampS": 1230011050
        }
    ]
}

通过

timestampS
< 1230011040, I need to run:

获取所有请求
const value = await this.client.json.get('test1', { path: `$.*[?(@.timestampS<1230011040)]` });

它有效。

value
是一个只有一个元素的数组(“requestId”为“123”的请求对象)。

但是,我不知道如何获取包含所有请求对象的数组

timestampS
< 1230011040 from redis key
test2
其值:

{
  "123": {
        "requestId": "123",
        "requestType": "TYPE_1",
        "foo": "bar",
        "timestampS": 1230011000
    },
    "124": {
        "requestId": "124",
        "requestType": "TYPE_1",
        "foo": "bar2",
        "timestampS": 1230011050
    }
}

可以吗?

redis jsonpath node-redis redisjson
1个回答
0
投票

就 JSON 路径而言,是的,过滤器选择器同时作用于停留和对象。 对于对象,它忽略键并迭代值。

我不知道redis是否支持,但这是一个非常基本的功能,所以应该是。

另外,如有疑问,请尝试一下。

© www.soinside.com 2019 - 2024. All rights reserved.