2017-03-14 23 views
0

は私の関係をチェックし、次のNeo4jクエリは2つのノード間でカウントしている:データベースにneo4jでクエリが0、0を返すのはなぜですか?

match (a:T {id:1})-[y:FR]->(b:T {id:3}) match (a)-[x:F]->(b) return SIGN(COUNT(x)), SIGN(COUNT(y))

、しかし、ノード間の両方FFR関係が存在し、それは0,0を返すのですか?

私のクエリで何が問題になっていますか?

+0

:Fと:FRは同じノードの間に存在します。あなたが持っているように見えます:Fいくつかのノードでは:FD他の人はFDですが両方の共用体はありません –

答えて

1

ノードが存在することが分かっているが、関係が存在するかどうかわかっている場合は、このような一致を実行すると、MATCHが失敗して行が生成されず、一致しなかった以前の試合

あなたのケースでは、各ノードで一致させ、希望する関係タイプのSIZE()を取得するか、そのような関係が存在するかどうかを返すだけでよい場合は、指定されたノードに対してEXISTSパターン:もちろん

match (a:T {id:1}), (b:T {id:3}) 
return EXISTS((a)-[:F]->(b)), EXISTS((a)-[:FR]->(b)) 

あなただけの1または0の代わりに真/偽のが必要な場合は、代わりにようにSIGN(SIZE((a)-[:F]->(b)))に固執して。

+0

私はEXISTSで解決しました。魅力のように働いた。ありがとうございました :) –

関連する問題