在neo4j中使用MATCH过滤时如何获得节点的度数

Don*_*hew 3 neo4j cypher

我有一个4级图表.在使用过滤时MATCH,我如何获得节点的"度"?我总是获得1的"学位".

这是我的查询:

MATCH (k)-[r*]->(n:ABC)
WITH k,r,n,count(k) as degree
WHERE k.Value='30 ' AND degree > 1
RETURN n,r,k,degree;
Run Code Online (Sandbox Code Playgroud)

Mic*_*ger 9

您的计数为1,因为您聚合了路径中的所有3,起始节点,终端节点和所有关系.

这是最有效的方式.

MATCH (k)
WITH k, size((k)-[:TYPE]->()) as degree
WHERE k.Value='30 ' AND degree > 1
MATCH (k)-[r:TYPE]->(n:ABC)
RETURN n,r,k,degree;
Run Code Online (Sandbox Code Playgroud)


Bri*_*ood 1

更多信息会很有帮助,但一般来说,您可以通过执行以下操作来获取节点的度数:

MATCH (n)--(other)
WHERE n.id = {id}
RETURN count(other)
Run Code Online (Sandbox Code Playgroud)

如果您想查找许多节点的度数,您可以省略WHERE或指定更通用的查询:

MATCH (n)--(other)
WHERE n.property = {value}
RETURN n, count(other)
Run Code Online (Sandbox Code Playgroud)

  • 使用 `id()` 当然是获取 Neo4j 内部 ID 的方法,但由于这些 ID 可以回收,我通常使用一个属性(在本例中为 `id`)作为示例 (2认同)