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

使用Neo4j官方Procedure Template调用travers.findCoActors报错求助

解决Neo4j自定义过程调用的YIELD报错问题

错误原因

Neo4j 4.x及以上版本中,调用返回结果的自定义过程时,必须显式使用YIELD指定要接收的输出字段,不能隐式处理返回结果,这就是你遇到报错的直接原因。

正确查询写法

首先需要明确你的CoActorRecord类定义的输出字段——根据代码逻辑,它是将遍历到的Node包装成CoActorRecord实例,结合官方模板的惯例,这个类通常会有一个标注@ResultField的公共字段(比如coActor或node)。假设你的CoActorRecord符合官方模板规范,定义如下:

public static class CoActorRecord {
    @ResultField("coActor")
    public final Node coActor;

    public CoActorRecord(Node coActor) {
        this.coActor = coActor;
    }
}

对应的正确查询语句为:

MATCH (n:Person)
CALL travers.findCoActors(n.name) YIELD coActor
RETURN n.name AS actor, coActor AS coActorNode

如果你的CoActorRecord字段名为node,则调整为:

MATCH (n:Person)
CALL travers.findCoActors(n.name) YIELD node
RETURN n.name AS actor, node AS coActorNode

优化建议

  • 原查询会遍历所有Person节点并逐个调用过程,容易产生重复结果,可添加DISTINCT去重:
MATCH (n:Person)
CALL travers.findCoActors(n.name) YIELD coActor
RETURN DISTINCT n.name AS actor, coActor.name AS coActorName
  • 若只需要查询特定演员的合作演员,可直接传入指定名称,避免遍历所有节点:
CALL travers.findCoActors("Tom Hanks") YIELD coActor
RETURN coActor.name AS coActorName

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 12:25:31