提问者:小点点

Neo4j:以节点为单位的Expres路径密码查询结果


我有以下节点结构Emp[e_id,e_name,e_bossid]。更重要的是,我有一个递归查询,利用SELF关系递归遍历数据库e_bossid-[REPORTS_TO]-

MATCH (e:Employee) WHERE NOT (e)-[:REPORTS_TO]->()
SET e:Root;

MATCH path = (b:Root)<-[:REPORTS_TO*]-(e:Employee)
RETURN path
limit 1000;

但是结果是PATH。我希望结果以NODES的形式出现,而不是路径。我尝试使用节点(path),但它给我一个错误:

org.codehaus.jackson.map. JsonMappingException:引用节点不可用(通过引用链:java.util.ArrayList[0]-

当我在没有节点(路径)的情况下查询时,它似乎只返回路径。

在密码查询的基础上应该如何做到这一点?


共1个答案

匿名用户

我不确定为什么你会想要得到组织层次结构中所有可能的路径。也许你想要得到的是从树的叶子到树的根的一组路径,并将每个唯一的集合作为一行节点返回。

MATCH (b:Employee)
WHERE NOT (b)-[:REPORTS_TO]->()
MATCH (l:Employee)
WHERE NOT (l)<-[:REPORTS_TO]-()
MATCH p = shortestPath((b)<-[:REPORTS_TO*]-(l))
RETURN nodes(p) as reports

就你的错误而言,这看起来像是一个bug,尽管我不知道你使用的是什么版本的Neo4j。很可能,你的查询不会完成,因为你的Root员工仍然是员工标签的成员。这意味着这个模式:MATCH path=(b: Root)

试试我的查询,让我知道会发生什么。