寻找与其他人有联系的人
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
我正在玩 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