2017-01-19 6 views
0

これは私のグラフである:なぜサイファークエリ収率不明なエラーがない

enter image description here

私は "私が間にパスをしたい場合、たとえば私のグラフの2つのポート間のすべての単純なパスを検索するクエリを実行したいです" - > "JebelAli"

ないこの2バンダルアッバス:

:バンダルアッバス」と "JebelAliは"

私は、以下のパスをしたいです"

"バンダルアッバス" - > "JebelAli"
"バンダルアッバス" - > "JebelAli" - > "Soha" - > "チャンChoong" - > "JebelAli"

は、だから私はこのChypherを書きましたクエリ:

MATCH path=(port1: Port { name: "Bandar Abbas" })-[:CMA*]->(port2: Port { name: "JebelAli" }) 
WHERE ALL(n in nodes(path) WHERE 1=size(filter(m in nodes(path) WHERE n=m))) 
RETURN path; 

しかし、それは私にこのエラーを与える:

key not found: UNNAMED50
Neo.DatabaseError.General.UnknownError

答えて

0

私はこのクエリと私の問題解決:

MATCH path=(port1: Port { name: "Bandar Abbas" })-[:CMA*]->(port2: Port { name: "JebelAli" }) 
WHERE size(nodes(path))=size(filter(m in nodes(path) WHERE 1=size(filter(n in nodes(path) WHERE n.name=m.name)))) 
RETURN path; 


を私の最初のクエリは、そのエラーを与えた理由は、まだ私にはわかりません!

0

私の間違いは、すべての単純なパスが必要な場合は、APOC Proceduresで、具体的にはgraph algorithmsセクションのallSimplePathsプロシージャでこれを行うことができます。

使い方の例:

MATCH (port1: Port { name: "Bandar Abbas" }), (port2: Port { name: "JebelAli" }) 
call apoc.algo.allSimplePaths(port1, port2, 'CMA>', 5) YIELD path 
RETURN path 
+0

あなたが任意のアイデア理由がありますか、私のクエリが間違っていますか? – John

0

これはneo4j 3.1.0(これはあなたが使用している可能性があります)のバグです。ここで

は、すべてのノードが一度だけ表示されるパスを取得するための別の方法である(すなわち、ノードの数は、個別のノードの数と同じである):

MATCH path=(port1: Port { name: "Bandar Abbas" })-[:CMA*]->(port2: Port { name: "JebelAli" }) 
WITH path, nodes(path) AS ns 
WITH path, ns, COUNT(ns) AS cnt_all 
UNWIND ns AS n 
WITH path, cnt_all, COUNT(DISTINCT n) AS cnt_distinct 
WHERE cnt_all = cnt_distinct 
RETURN path; 
関連する問題