簡體   English   中英

Neo4j:根據節點表示路徑密碼查詢結果

[英]Neo4j: Expres path cypher query result in terms of nodes

我具有以下節點結構Emp[e_id, e_name, e_bossid] 而且我有一個遞歸查詢 ,該查詢以SELF關系e_bossid-[REPORTS_TO]->e_id遞歸遍歷方式利用數據庫

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而不是路徑的形式產生結果。 我試圖使用nodes(path) ,但是它給了我一個錯誤:

org.codehaus.jackson.map.JsonMappingException: Reference node not available (through reference chain: java.util.ArrayList[0]->java.util.HashMap["rel"]->java.util.HashMap["nodes(path)"]->java.util.ArrayList[0]->org.neo4j.rest.graphdb.entity.RestNode["restApi"]->org.neo4j.rest.graphdb.RestAPIFacade["direct"]->org.neo4j.rest.graphdb.ExecutingRestAPI["referenceNode"])

當我查詢沒有nodes(path)它似乎只返回路徑。

應該如何基於密碼查詢來完成?

我不確定為什么要在組織層次結構中獲取所有可能的路徑。 也許您想要獲得的是一組從樹的葉子到樹的根的路徑,並將每個唯一的集合返回為一行節點。

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

就您的錯誤而言,這似乎是一個錯誤,盡管我不知道您使用的是什么版本的Neo4j。 由於您的Root員工仍然是Employee標簽的成員,因此您的查詢極有可能無法完成。 這意味着該模式: MATCH path = (b:Root)<-[:REPORTS_TO*]-(e:Employee)與可變長度遍歷的每一側上的Root雇員匹配。

試試看我的查詢,讓我知道會發生什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM