在Neo4j电影数据库中找到两个节点之间的连接

时间:2017-01-17 21:17:05

标签: neo4j

如何在neo4j样本数据集的Neo4j图形电影数据库中找到id = 1100的Actor节点和id = 65731的Actor节点之间的某些连接?我已经尝试了很多,但到目前为止,我知道id 11oo是Arnold Schwarzenegger,id 65731是Sam Worthington。当我使用ACTS_In关系运行Cypher时,它一起显示没有电影。

为了找到我曾使用过Cypher的名字:

MATCH (a:Actor {id:"1100"}),(b:Actor {id:"65731"}) 
RETURN a.name, b.name

为了寻找关系,我使用了这个Cypher:

Match(a:Actor{name:"Arnold Schwarzenegger"})-[:ACTS_IN]->()<-[:ACTS_IN]-(b:Actor{name:"‌Sam Worthington"})
using index a:Actor(name) 
using index b:Actor(name) 
return count(*) 

我正在寻找任何类型的连接。不仅是同一部电影。

1 个答案:

答案 0 :(得分:1)

通常,要查找任意2个节点之间的路径,您可以执行variable-length relationship查询。

例如:

MATCH path=(a:Actor{name:"Arnold Schwarzenegger"})-[*]-(b:Actor{name:"Sam Worthington"})
RETURN path;

但是,请注意,无限长的可变长度关系查询可能需要很长时间才能完成(或者似乎永远不会完成),即使数据库相对较小也是如此。最佳实践是在查询的深度上设置合理的上限。例如,要搜索最多5的路径深度

MATCH path=(a:Actor{name:"Arnold Schwarzenegger"})-[*..5]-(b:Actor{name:"Sam Worthington"})
RETURN path;