我有一个使用Redis JSON NPM包的Node.JS应用程序,我知道我可以使用JsonPath模式更新多个键,就像Redis JSON文档显示的那样:
redis> JSON.SET doc $ '{"f1": {"a":1}, "f2":{"a":2}}'
OK
redis> JSON.SET doc $..a 3
OK
redis> JSON.GET doc
"{\"f1\":{\"a\":3},\"f2\":{\"a\":3}}"
但是,只有当您更新具有公共名称的键,并且路径模式(“$.. a”)匹配多个键时,这种方法才有效。是否有一种方法可以使用相同的SET命令但使用独立路径列表来更新多个键?例如,类似于以下内容:
await self.redisClient.json.set(
redisKey,
["$.key_1", "$.key_2", "$.key_3"],
valueToAssign,
{
NX: true
}
)
其中,值“valueToAssign”将被分配给顶级键:“key_1”、“key_2”和key_3”?上面的示例使用了NX
选项,因此我希望仅对那些尚不存在的键进行赋值。
1条答案
按热度按时间rks48beu1#
如果这些键位于同一父项下,则可以使用JSONPath
union
运算符(使用逗号),例如(使用CLI),同时设置$.a
和$.b
的值:除此之外,目前,您可以使用
MULTI
和EXEC
在单个事务中调用多个JSON.SET
。另请参阅https://github.com/RedisJSON/RedisJSON/issues/414