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

如何在Cypher查询中正确使用APOC.when按rel_type选择对应节点

根据rel_type动态匹配节点的实现方案

一、直接返回匹配节点(理想方案)

通过apoc.when动态判断rel_type的值,选择对应的节点标签执行匹配,最终返回完整节点。核心是将判断条件替换为变量对比,确保参数正确传入子查询:

MATCH (legal:Legal_Entity {hid_party : '157456674'})
WITH legal, '422741957' AS second_hid, 'LEGAL' AS rel_type

CALL apoc.when(
  rel_type = 'LEGAL',
  'MATCH (second:Legal_Entity {hid_party : $second_hid}) RETURN second AS second_node',
  'MATCH (second:Natural_Person {hid_party : $second_hid}) RETURN second AS second_node',
  {second_hid: second_hid}
) YIELD value

RETURN value.second_node

当rel_type为'LEGAL'时,匹配Legal_Entity节点;为'PHYSICAL'时,匹配Natural_Person节点,返回的value.second_node就是目标节点。

二、返回匹配节点的ID(备选方案)

若无需完整节点,仅需节点唯一ID,只需修改子查询的返回内容为ID(second)即可:

MATCH (legal:Legal_Entity {hid_party : '157456674'})
WITH legal, '422741957' AS second_hid, 'LEGAL' AS rel_type

CALL apoc.when(
  rel_type = 'LEGAL',
  'MATCH (second:Legal_Entity {hid_party : $second_hid}) RETURN ID(second) AS node_id',
  'MATCH (second:Natural_Person {hid_party : $second_hid}) RETURN ID(second) AS node_id',
  {second_hid: second_hid}
) YIELD value

RETURN value.node_id

返回的value.node_id即为目标节点的ID,逻辑与返回节点完全一致,仅输出内容不同。

内容的提问来源于stack exchange,提问作者Kerpol

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 17:01:08