Hazelcast Map JSON数据SQL查询:筛选hasEvents为true的条目
正确查询Hazelcast Map中JSON格式数据的方法
你的问题出在误用了JSON_QUERY的作用,它是用来提取JSON片段的,不能直接用来筛选条目,而且路径语法也有误。以下是两种可行的正确写法:
方法一:使用JSON_VALUE结合WHERE子句筛选
JSON_VALUE用于提取JSON路径对应的单个值,配合WHERE子句就能过滤出符合条件的条目:
SELECT * FROM products WHERE JSON_VALUE(this, '$.data.field1.hasEvents') = 'true'
注意:Hazelcast会将JSON中的布尔值解析为字符串类型的'true'/'false',所以这里要和字符串'true'做比较,而非布尔值true。
方法二:直接使用JSON路径访问(需配置JSON映射)
如果你的Hazelcast Map已经配置为存储JSON格式数据(创建时指定format: JSON),可以直接用点语法访问嵌套字段:
SELECT * FROM products WHERE this.data.field1.hasEvents = true
这种写法更简洁,但前提是Map已正确识别为JSON存储格式。
为什么原语句无效?
你之前的JSON_QUERY语句只是尝试提取匹配路径的JSON值,并没有通过WHERE子句筛选整个条目,而且$.data.field1.hasEvents?==true不是合法的JSON路径语法,JSON_QUERY的第二个参数仅支持标准JSON路径表达式,不包含条件判断。
内容的提问来源于stack exchange,提问作者Postit0812
相关产品推荐
相关产品推荐

