2017-02-03 8 views
0

私は単純な質問を解決しようとしていますが、 "知っている"関係のグラフでは、ある人が何人かを知っていますB.理想的には、または偽ですが、私はこれを解決することに失敗しています。neo4j/springデータに関係があるかどうかをテストします

私は離れて私の質問に答えるから、それはまた、グラフを変更する以外、私が欲しいものはほとんどあり別StackOverflow questionに次を見つけた:私はこの中に入れたい最後に

MATCH (p:Person {userId: {0}}), (b:Person {userId: {1}}) 
MERGE (p)-[r:KNOWS]->(b) 
ON CREATE SET r.alreadyExisted=false 
ON MATCH SET r.alreadyExisted=true 
RETURN r.alreadyExisted; 

をスプリングスクエリと検索メソッドを使用して、細かすぎるだろう - CYPHERせずにそれを行う方法があるかどうかを意味し、この

public interface PersonRepository extends GraphRepository<Person> { 
    boolean knows(final Long me, final Long other); 
} 

のような春のNeo4jリポジトリ。

答えて

4

このCypherクエリは単純なものです。ここで重要なのは、関数に与えられたパターンがグラフに存在する場合にブール値を返すEXISTS()関数です。

ここではCypherのクエリです。

MATCH (p:Person {userId: {0}}), (b:Person {userId: {1}}) 
RETURN EXISTS((p)-[:KNOWS]-(b)) 

あなたも、それをより簡潔にすることができます。

RETURN EXISTS((:Person {userId: {0}})-[:KNOWS]-(:Person {userId: {1}})) 
+0

おかげでそんなに - 私はEXISTS()関数をしようとしていたが、関係の船が存在した状態にする方法を見つけ出すことができませんでした!私の「知っている」関係は方向性があるので、AはBを知らずにAを知ることができます。私はそれを(p) - [:KNOWS] - >(b)に変更しました。 – schneida

関連する問題