neo4j cypher避免路径重复
我有以下查询,我希望避免路径的重复(simetric) 我尝试了neo4j cypher避免路径重复,neo4j,cypher,Neo4j,Cypher,我有以下查询,我希望避免路径的重复(simetric) 我尝试了DISTINCT关键字,但得到了语法错误 我在寻找类似(但也失败了)的东西: 您可以只添加一个简单的测试,以确保一个大于另一个,这样您就不会多次收到相同的配对 MATCH (a:PERSON)-[:LIKES]->(b:PERSON)-[:LIKES]->(a) where id(b) > id(a) return a,b 我不明白,a b如何避免得到多个相同的配对。不是,而是大于或小于。您正在匹配a-[:LI
DISTINCT
关键字,但得到了语法错误
我在寻找类似(但也失败了)的东西:
您可以只添加一个简单的测试,以确保一个大于另一个,这样您就不会多次收到相同的配对
MATCH (a:PERSON)-[:LIKES]->(b:PERSON)-[:LIKES]->(a)
where id(b) > id(a)
return a,b
我不明白,a b如何避免得到多个相同的配对。不是
,而是大于
或小于
。您正在匹配a-[:LIKES]>b
,并且相互匹配b-[:LIKES->a
。因此,当您获得其中一个闭环匹配时,它会向前和向后工作。您返回的是一对节点,因此对于每两个人,他们将生成两个匹配,每个位置有一个人。使用比较运算符的原则是只返回其中一个匹配。因为颂歌总是存在的,唯一的一对总是比另一对大,每对只返回一次而不是两次。
MATCH path=(a:PERSON)-[:LIKES]->(b:PERSON)-[:LIKES]->(a)
where DISTINCT(path)
return a,b
MATCH (a:PERSON)-[:LIKES]->(b:PERSON)-[:LIKES]->(a)
where id(b) > id(a)
return a,b