You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 03:06:29