2016-09-22 44 views
1

Neo4j的版本失敗-[r:CONNECTSWITH]->但如果關係數定義-[r:CONNECTSWITH*..3]->,那麼它扔的Cypher查詢而定義的關係數

鑰匙找不到,R

工作:

OPTIONAL MATCH p=(o:PORT{name:"busstop1"})-[r:CONNECTSWITH]->(d:PORT{name:"busstop2"}) 
WHERE ALL(r1 IN rels(p) 
      WHERE 1 = size(filter(r2 IN rels(p) WHERE (r1.service = r2.service)))) 
AND ALL(n IN nodes(p) WHERE 1 = size(filter(m IN nodes(p) WHERE id(m) = id(n)))) 
RETURN p 
LIMIT 10 

不工作:

OPTIONAL MATCH p=(o:PORT{name:"busstop1"})-[r:CONNECTSWITH*..3]->(d:PORT{name:"busstop2"}) 
WHERE ALL(r1 IN rels(p) 
      WHERE 1 = size(filter(r2 IN rels(p) WHERE (r1.service = r2.service)))) 
AND ALL(n IN nodes(p) WHERE 1 = size(filter(m IN nodes(p) WHERE id(m) = id(n)))) 
RETURN p 
LIMIT 10 

解決方法解決方案:

OPTIONAL MATCH p=(o:PORT{name:"busstop1"})-[r:CONNECTSWITH*..3]->(d:PORT{name:"busstop2"}) 
WHERE ALL(r1 in rels(p) 
      WHERE 1 = size(filter(r2 IN rels(p) WHERE (r1.service = r2.service)))) = 
     ALL(n IN nodes(p) WHERE 1 = size(filter(m IN nodes(p) WHERE id(m) = id(n)))) 
AND ALL(r1 in rels(p) 
     WHERE 1 = size(filter(r2 IN rels(p) WHERE (r1.service = r2.service)))) 
RETURN p 
LIMIT 10 
+0

我已經通過複製codition更新了變通解決問題,提供優化的解決方案表示讚賞 – Jeevanantham

回答

1

旁白:這感覺就像一個Neo4j的錯誤。如果您正在使用最新版本的Neo4j遇到此,你可能希望提交一個neo4j issue

作爲一種可能的解決方法,由於查詢實際上並未使用r標識符,請嘗試從查詢中將其刪除。

+0

同時用了嘗試'r'它與隨機標識符拋出'沒有找到關鍵:UNNAMED41'。在neo4j git hub中也創建了這個問題 – Jeevanantham