apoc.neighbors.tohop过程
语法 |
|
||
描述 |
返回在指定距离内通过给定的 |
||
输入参数 |
名称 |
类型 |
描述 |
|
|
算法的起始节点。 |
|
|
|
要追踪的关系类型列表。关系类型使用 APOC 的关系方向模式语法表示; |
|
|
|
要跳跃的最大步数。默认值为: |
|
返回参数 |
名称 |
类型 |
描述 |
|
|
一个相邻节点。 |
|
使用示例
本节中的示例基于以下示例图
MERGE (mark:Person {name: "Mark"})
MERGE (praveena:Person {name: "Praveena"})
MERGE (joe:Person {name: "Joe"})
MERGE (lju:Person {name: "Lju"})
MERGE (michael:Person {name: "Michael"})
MERGE (emil:Person {name: "Emil"})
MERGE (ryan:Person {name: "Ryan"})
MERGE (ryan)-[:FOLLOWS]->(joe)
MERGE (joe)-[:FOLLOWS]->(mark)
MERGE (mark)-[:FOLLOWS]->(emil)
MERGE (michael)-[:KNOWS]-(emil)
MERGE (michael)-[:KNOWS]-(lju)
MERGE (michael)-[:KNOWS]-(praveena)
MERGE (emil)-[:FOLLOWS]->(joe)
MERGE (praveena)-[:FOLLOWS]->(joe)
apoc.neighbors.tohop 过程用于计算节点在指定跳数范围内的邻域。
以下代码返回 Praveena 在 1 跳范围内 FOLLOWS(关注)的人:
MATCH (p:Person {name: "Praveena"})
CALL apoc.neighbors.tohop(p, "FOLLOWS>", 1)
YIELD node
RETURN node
| 节点 |
|---|
(:Person {name: "Joe"}) |
Praveena 唯一关注的人是 Joe,因此这是返回的唯一节点。如果我们包含最多 2 跳的人会怎样?
以下代码返回 Praveena 在 2 跳范围内 FOLLOWS(关注)的人:
MATCH (p:Person {name: "Praveena"})
CALL apoc.neighbors.tohop(p, "FOLLOWS>", 2)
YIELD node
RETURN node
| 节点 |
|---|
(:Person {name: "Mark"}) |
(:Person {name: "Joe"}) |
现在 Mark 也被返回了。以下图形模式描述了 Emil 如何认识不同的人:
-
(praveena)-[:FOLLOWS]-(joe) -
(praveena)-[:FOLLOWS]-(joe)-[:FOLLOWS]→(mark)
如果我们只需要人数统计,可以使用计数变体。
以下代码返回 Praveena 在 2 跳距离内 FOLLOWS 的人数
MATCH (p:Person {name: "Praveena"})
CALL apoc.neighbors.tohop.count(p, "FOLLOWS>", 2)
YIELD value
RETURN value
| 值 |
|---|
2 |
如果我们不关心邻域中有哪些具体节点,而只想知道数量,也可以实现。请参阅 apoc.neighbors.tohop.count。