Cypher:根据不同关系类型的数量查找节点

Cypher: Finding a node based on its number of distinct relationship types

使用 Cypher,我如何找到具有 x 或更多不同类型关系的节点,并且连接到 y 或更多不同节点?

例如,a:Person 可以通过 'family'、'friend'、'coworker' 类型的关系连接到 b:Person。

我们如何找到一个,使得:

  1. a 有 2 种或更多不同的关系类型
  2. a 与至少 10 个人有联系

将此查询与中间聚合一起使用:

MATCH (p:Person)-[r:FAMILY|:FRIEND|:COWORKER]->(other:Person)
WITH p, count(distinct type(r)) as c, count(distinct other) as people
WHERE c > 2 and people >= 10
RETURN p

(您也可以在查询中省略提供的 rel-types)

只有尺寸可以使用路径表达式,速度更快。

MATCH (p:Person)
WHERE SIZE((p)-[:FAMILY|:FRIEND|:COWORKER]->()) >= 10
RETURN p