2017-06-11 13 views
2

私のneo4jグラフ-dbには、ノードPersonの1種類と、関係SENT_GIFTの1種類があります。したがって、これは2つの特定のPersonの間の2方向関係を作成します。例えば ​​-neo4jで単方向関係のみを見つける

I)のみの贈り物は

II)PERSON_2をPERSON_2することPERSON_1唯一の贈り物はPERSON_1すること

III)PERSON_1とPERSON_2はギフト互いに

は今、私が書きたいことができます特定の人(profileidによって指定された)に贈り物を(SENT_GIFT)与えたが、specific_personはそれらの人に才能を与えていないすべての人を見つけることになる。

私は、以下の方法でサイファーを記述しようとしています -

MATCH (specific_person:Person {profileid: <profile_id>}) 
MATCH (from_person:Person)-[rOpp:SENT_GIFT]->(specific_person)-[rDir:SENT_GIFT]->(from_person) 
WHERE rDir is null 
RETURN from_person; 

をしかし、期待される結果を得ていません。

答えて

4
Match (user:User)-[r]->(user2:User) 
Where Not (user2)-[]->(user) 
Return user, r, user2 
4

ここでWHERE句を使用して、一致したくないパターンを無効にします。

のような何か:

MATCH (from_person:Person)-[:SENT_GIFT]->(specific_person:Person {profileid: $profile_id}) 
WHERE NOT (specific_person)-[:SENT_GIFT]->(from_person) 
RETURN from_person; 
関連する問題