如何在RedisGraph中返回去重的节点JSON结果
RedisGraph 查询去重问题
执行命令:
GRAPH.QUERY mykey "MATCH (node:m000) RETURN toJson(node)"
得到包含重复项的结果:
[ { "key": "000", "containerid": "10000" // id 1 }, { "key": "001", "containerid": "10001" // id 2 }, { "key": "000", "containerid": "10000" // id 3 } ]
想要结果不包含重复项(如上例最后一项),尝试使用DISTINCT:
GRAPH.QUERY mykey "MATCH (node:m000) RETURN DISTINCT toJson(node)"
但仍返回所有记录,推测原因是每个节点的id唯一(尽管该id未在序列化的节点属性中)。可以自行过滤结果,但能否直接通过图命令实现去重?
可以直接通过图命令实现去重,核心是避开节点ID的唯一性影响,针对你关心的属性字段进行去重,以下是两种可行方案:
方案一:通过GROUP BY按属性分组
先指定要去重的属性字段分组,再将属性序列化为JSON返回:GRAPH.QUERY mykey "MATCH (node:m000) RETURN toJson({key: node.key, containerid: node.containerid}) AS nodeProps GROUP BY node.key, node.containerid"方案二:对属性组合使用DISTINCT
直接将属性组合后使用DISTINCT,确保相同属性组合只返回一次:GRAPH.QUERY mykey "MATCH (node:m000) RETURN DISTINCT toJson({key: node.key, containerid: node.containerid}) AS nodeProps"
这两种方法都不需要在客户端额外处理,直接通过查询语句得到无重复的属性结果。
内容的提问来源于stack exchange,提问作者Murrah
相关产品推荐
相关产品推荐

