Neo4j 返回由一组公共节点连接的节点
在Neo4j中,有没有一种方法可以使用cypher或gremlin返回节点列表,这些节点之间有一组共同的节点 例如Neo4j 返回由一组公共节点连接的节点,neo4j,cypher,gremlin,Neo4j,Cypher,Gremlin,在Neo4j中,有没有一种方法可以使用cypher或gremlin返回节点列表,这些节点之间有一组共同的节点 例如 Person1-[KNOWS]->Friend1 Person1-[KNOWS]->Friend2 Person1-[KNOWS]->Friend3 Person2-[HATES]->Friend2 Person2-[HATES]->Friend3 我想从Person1开始说,“找到那些恨我认识的所有人的人”,然后返回Person2,因为Perso
Person1-[KNOWS]->Friend1
Person1-[KNOWS]->Friend2
Person1-[KNOWS]->Friend3
Person2-[HATES]->Friend2
Person2-[HATES]->Friend3
我想从Person1
开始说,“找到那些恨我认识的所有人的人”,然后返回Person2
,因为Person1
知道Friend2,Friend3
和Person2
恨Friend2,Friend3
我从找到联系开始
START
person=node(1)
MATCH
person-[KNOWS]->friend<-[HATES]-enemy
RETURN
enemy
开始
人员=节点(1)
匹配
person-[KNOWS]->friend语法应如下所示,但我无法摆脱聚合错误消息
START
person=node(1)
MATCH
person-[r1:KNOWS]->friend<-[r2:HATES]-enemy
WHERE
count(distinct r1)=count(distinct r2)
RETURN
enemy
开始
人员=节点(1)
匹配
person-[r1:KNOWS]->friendfriend语法应如下所示,但我无法摆脱聚合错误消息
START
person=node(1)
MATCH
person-[r1:KNOWS]->friend<-[r2:HATES]-enemy
WHERE
count(distinct r1)=count(distinct r2)
RETURN
enemy
开始
人员=节点(1)
匹配
person-[r1:KNOWS]->friends这几乎是完美的。不幸的是,它不会返回正确的结果,因为r1
是一种KNOWS
关系,而r2
是一种haves
关系。这并不重要,因为恨你所有朋友的人必须拥有与恨你的类型KNOWS相同数量(计数)的关系。因此,比较计数(r1)和计数(r2)应该是一个合适的等式。这几乎是完美的。不幸的是,它不会返回正确的结果,因为r1
是一种KNOWS
关系,而r2
是一种haves
关系。这并不重要,因为恨你所有朋友的人必须拥有与恨你的类型KNOWS相同数量(计数)的关系。因此,比较计数(r1)和计数(r2)应该是一个合适的等式。