我有以下节点结构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]-
当我在没有节点(路径)
的情况下查询时,它似乎只返回路径。
在密码查询的基础上应该如何做到这一点?
我不确定为什么你会想要得到组织层次结构中所有可能的路径。也许你想要得到的是从树的叶子到树的根的一组路径,并将每个唯一的集合作为一行节点返回。
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)
试试我的查询,让我知道会发生什么。