如何在Redis中按条件批量更新JSON的多个值?
RedisJSON按条件批量更新多个属性的实现方法
要实现按Code == 'abc'的条件批量更新JSON中的多个属性,你可以正确使用JSON.MSET命令,它支持多组key-路径-值的批量操作,每组操作都需要完整指定键、JSONPath路径和对应值。
正确命令示例
假设你需要更新feeAmount和另一个属性(比如feeType),命令格式如下:
JSON.MSET TDSS "$.accounts[?(@.Code == 'abc')].feeAdj[0].feeAmount" "\"1000\"" TDSS "$.accounts[?(@.Code == 'abc')].feeAdj[0].feeType" "\"fixed\""
关键注意事项
JSON.MSET的语法是重复的key path value三元组,每一个属性更新都需要单独指定键、目标路径和值,不能省略重复的键名。- 字符串类型的值需要用双引号包裹,在命令行环境下要注意转义(如
\"1000\");数值类型则可以直接写入(比如1000无需引号)。 - 确保你的RedisJSON版本支持带条件的JSONPath表达式(
[?(@.Code == 'abc')]),较旧版本可能存在兼容性问题,建议升级到最新稳定版。
验证更新结果
执行命令后,可通过JSON.GET验证更新是否生效:
JSON.GET TDSS "$.accounts[?(@.Code == 'abc')].feeAdj[0]"
内容的提问来源于stack exchange,提问作者Rishab
相关产品推荐
相关产品推荐

