寻找与其他人有联系的人

Find persons with connection to other person

我正在玩 Neo4J,并试图找到所有与某个人有联系的人。

我想要的是有一个(p:Person) 和查看所有关系,并跟随它们,直到我找到另一个(p2:Person),并且return 所有(p2) .从 (p) 到 (p2) 可以有不同的路线。几个例子是:

(p:Person)-->(:Tweet)-[:mentions]->(p2:Person)
(p:Person)-->(:Tweet)-[:in_reply_to]->(:Tweet)-[:mentions](p2:Person)
(p:Person)-[:follows]->(p2:Person)

还有很多其他案例。更一般地说,要点是,我想跟踪 (p:Person) 的关系,直到它找到 (p2:Person) 或节点不再有外出的、未使用的关系

你可以试试这个

(p:Person)-[:mentions|in_reply_to|mentions*1..5]->(p2:Person)

这将匹配与这些关系类型匹配的所有长度为 1 到 5 的路径。如果您不关心方向性,也可以去掉方向性。您可能希望将其分配给一个路径变量,然后 return 像这样:

MATCH path=(p:Person)-[:mentions|in_reply_to|mentions*1..5]->(p2:Person)
RETURN path

如果你想找到两个人之间的最短路径:

MATCH path=shortestPath((p:Person)-[:mentions|in_reply_to|mentions*1..5]->(p2:Person))
RETURN path