首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在RedisJSON中操作嵌套的观察数组

在RedisJSON中操作嵌套的观察数组
EN

Stack Overflow用户
提问于 2022-01-09 11:43:08
回答 1查看 536关注 0票数 2

我有一个带有嵌套数组的JSON,如下所示,要保存在Redis中。我使用RedisJSON模块将数据保存为JSON。

代码语言:javascript
复制
customer:12345 : {
    info : {
        key1: val1,
        key2: val2,
        key3: val3
    },
    rides: [
        {
            rideid: xxx,
            from: fromval,
            to: toval,
            date: dateofride,
            distance: distanceval,
            points: pointsval
        },
        {
            rideid: yyy,
            from: fromval,
            to: toval,
            date: dateofride,
            distance: distanceval,
            points: pointsval
        },
        ...
    ]
}

在这种情况下,可以将新项添加到数组中,或者可以编辑现有项。我使用的是带有express.js的节点-redis客户机。Express应用程序只接收被修改或添加到游戏机数组中的数据。如果项已经在数组中,则新数据必须替换现有的数组项(rideid是每个对象的关键),否则必须将其添加到数组中。我怎样才能做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-10 23:24:55

给定以下JSON文档

代码语言:javascript
复制
{
    "info": {
        "key1": "val1"
    },
    "rides": [{
            "rideid": "xxx",
            "points": 0
        },
        {
            "rideid": "yyy",
            "points": 10
        }
    ]
}

它由RedisJSON中的键RedisJSON使用以下命令保存

代码语言:javascript
复制
127.0.0.1:6379> JSON.SET customer:12345 . "{\"info\": {\"key1\": \"val1\",\"key2\": \"val2\",\"key3\": \"val3\"},\"rides\":[{\"rideid\": \"xxx\",\"points\": 0 },\t{\"rideid\": \"yyy\",\"points\": 10}]}"

您可以使用rideid yyy更新骑行,例如将分数增加5,如下所示

代码语言:javascript
复制
127.0.0.1:6379> JSON.NUMINCRBY customer:12345 "$.rides[?(@.rideid=='yyy')].points" 5
"[15]"

$.rides[?(@.rideid=='yyy')].points是一个JSONPath表达式(更多的是这里这里,同时也回答了这里)

增加一个新的骑行

代码语言:javascript
复制
127.0.0.1:6379> JSON.ARRAPPEND customer:12345 $.rides "{\"rideid\": \"zzz\",\"points\": 5 }"
1) (integer) 3

所有RedisJSON命令都可以找到这里

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

https://stackoverflow.com/questions/70640933

复制
相关文章

相似问题

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