Neo4j 在以三人或三人以上开头的密码语句中寻找共同的朋友

Neo4j 在以三人或三人以上开头的密码语句中寻找共同的朋友,neo4j,cypher,Neo4j,Cypher,我正在尝试为neo4j构建一个cypher语句,其中我通过名称知道2-n个起始节点,并且需要找到所有起始节点都可以访问的节点(如果有) 起初,我认为这类似于“共同的朋友”的情况,可以像这样处理 (start1)-[*…2]->(main)问题中显示的查询正在生成一个查询,因为您正在匹配多个断开连接的模式 与分别匹配所有节点并使用WHERE限制这些节点之间的关系不同,您可以执行以下操作: MATCH (start1 {name:'Person1'})-[*..2]->(main), (sta

我正在尝试为neo4j构建一个cypher语句,其中我通过名称知道2-n个起始节点,并且需要找到所有起始节点都可以访问的节点(如果有)

起初,我认为这类似于“共同的朋友”的情况,可以像这样处理
(start1)-[*…2]->(main)问题中显示的查询正在生成一个查询,因为您正在匹配多个断开连接的模式

与分别匹配所有节点并使用
WHERE
限制这些节点之间的关系不同,您可以执行以下操作:

MATCH (start1 {name:'Person1'})-[*..2]->(main),
(start2 {name:'Person2'})-[*..2]->(main), 
(start3 {name: 'Person3'})-[*..2]->(main)
RETURN main

上面的查询将更有效,因为它将只匹配所需的模式。请注意,当您进行
匹配(start1{name:'Person1'}),(start2{name:'Person2'}),(start3{name:'Person3'}),(main)
时,部分
(main)
将匹配图形的所有节点,因为没有指定对此的限制。您可以使用查询来更清楚地查看它。

感谢您的帮助,使用不同的起点,它确实更高效,甚至更容易生成。您好@StefanKüppers,欢迎您!如果这个答案已经解决了你的问题,请通过点击复选标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。
MATCH (start1 {name:'Person1'})-[*..2]->(main),
(start2 {name:'Person2'})-[*..2]->(main), 
(start3 {name: 'Person3'})-[*..2]->(main)
RETURN main