Neo4j Cypher关于寻找志同道合的人的询问

时间:2014-12-20 01:16:41

标签: neo4j cypher

我知道这可能是一个简单的问题,但我很难找到答案。

我想找到INTERESTED_IN与{1}}相同Activities的所有“人”,其身份为1且不是FRIENDS_WITH人1

这样的东西
MATCH (p:Person {Id:1})--[r:INTERSTED_IN]-->(a:Activity {name:Skiing})<--(f:Person)
RETURN f.name

可能是错的..

我认为这会发现每个人都有相同的关系,但我想确保他们不是朋友。

试图弄清楚密码并找不到任何好的例子。

1 个答案:

答案 0 :(得分:2)

几乎得到了它!

MATCH (p:Person { id: 1 })-[r:INTERESTED_IN]->(a:Activity { name: 'Skiing' })<-[r2:INTERESTED_IN]-(f:Person)
WHERE NOT (p)-[:FRIENDS_WITH]-(f)
RETURN f.name

请注意,id这里是属性,而不是内部节点ID。如果这是您正在寻找的内容,那么您就是这样做的:

MATCH (p:Person)-[r:INTERESTED_IN]->(a:Activity { name: 'Skiing' })<-[r2:INTERESTED_IN]-(f:Person) 
WHERE ID(p) = 1 AND NOT (p)-[:FRIENDS_WITH]-(f)
RETURN f.name

它是&#34; cypher。&#34; ; - )