valkey-bundle 8.1中JSON.DEL使用过滤条件时无法正常工作
Valkey json.del 返回0的问题排查与解决
问题原因:你的JSON结构中
root是对象(键值对集合),而非数组。你使用的[?(@.value > 2)]是JSONPath针对数组元素的过滤语法,直接作用于对象时无法匹配到任何节点,因此json.del返回0。正确命令写法:
要匹配root下所有子对象并过滤value>2的节点,需要先通过*.定位到root的所有子对象,再应用过滤条件:json.del test '$.root.*[?(@.value > 2)]'执行该命令后会返回3,符合你的预期。
补充说明:
$.root.*的作用是匹配root下的所有直接子对象(即"1"、"2"..."5"对应的{"value":n}对象);- 若JSON结构简单,也可使用递归匹配的表达式
$..*[?(@.value > 2)],但复杂结构下可能误匹配非root下的节点,建议优先使用精准定位的表达式。
内容的提问来源于stack exchange,提问作者Luca Basso Ricci
相关产品推荐
相关产品推荐

