1

cypher または gremlin のいずれかを使用して、Neo4j で共通のノード セットを持つノードのリストを返す方法はありますか?

例は

Person1-[KNOWS]->Friend1
Person1-[KNOWS]->Friend2
Person1-[KNOWS]->Friend3

Person2-[HATES]->Friend2
Person2-[HATES]->Friend3

私は始めて、「私が知っPerson1ているすべての人を憎む人々を見つけてください」と言いたいと思います.Person2Person1Friend2,Friend3Person2Friend2,Friend3

私はつながりを見つけることから始めました、

START
    person=node(1)
MATCH
    person-[KNOWS]->friend<-[HATES]-enemy
RETURN 
    enemy

しかし、その人がすべての友達を憎まなければならないような表現方法を見つけることができないようです.

これはCypherで実行できますか?

4

1 に答える 1

1

構文は次のようになりますが、集約されたエラーメッセージを取り除くことはできません

START
    person=node(1)
MATCH
    person-[r1:KNOWS]->friend<-[r2:HATES]-enemy
WHERE
    count(distinct r1)=count(distinct r2)
RETURN 
    enemy

編集:多分これは近いです:

START
    person=node(1)
MATCH
    person-[r1:KNOWS]->friend<-[r2:HATES]-enemy, person-[r3?:KNOWS]-enemy
WITH
    person, enemy, count(distinct r1) as  rk1, count(distinct r2) as rk2,r3
WHERE 
    r3 is null
    AND
    r1=r2 
RETURN 
    enemy
于 2012-07-03T08:05:00.867 に答える