|| apoc.neighbors.athop - APOC 核心文档 - Neo4j 文档

apoc.neighbors.athop

详情

语法

apoc.neighbors.athop(node [, relTypes, distance ]) :: (node)

描述

返回在指定距离处由给定 RELATIONSHIP 类型连接的所有 NODE 值。

输入参数

名称

类型

描述

node

NODE

算法的起始节点。

relTypes

STRING

要遵循的关系类型列表。关系类型使用 APOC 的关系方向模式语法表示;[<]RELATIONSHIP_TYPE1[>]|[<]RELATIONSHIP_TYPE2[>]|…​。默认值为:

distance

INTEGER

要跳的步数。默认值为:1

返回参数

名称

类型

描述

node

NODE

一个邻近节点。

使用示例

本节中的示例基于以下示例图

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)

此过程计算节点在特定跳数上的邻居。

以下返回 Emil 在 1 跳距离处 KNOWS 的人

MATCH (p:Person {name: "Emil"})
CALL apoc.neighbors.athop(p, "KNOWS", 1)
YIELD node
RETURN node
结果
node

(:Person {name: "Michael"})

Emil 只与 Michael 有直接的 KNOWS 关系,因此 Michael 是此查询返回的唯一节点。

以下返回 Emil 在 2 跳距离处 KNOWS 的人

MATCH (p:Person {name: "Emil"})
CALL apoc.neighbors.athop(p, "KNOWS", 2)
YIELD node
RETURN node
结果
node

(:Person {name: "Praveena"})

(:Person {name: "Lju"})

Michael 也 KNOWS Praveena 和 Lju,由于 Emil 不直接 KNOWS 他们中的任何一个,他只在 2 跳距离处 KNOWS 他们。

如果我们不关心邻居中有哪些节点,而只是想知道数量,我们也可以做到。请参阅 apoc.neighbors.athop.count

© . This site is unofficial and not affiliated with Neo4j, Inc.