Cypher:根据不同关系类型的数量查找节点
Cypher: Finding a node based on its number of distinct relationship types
使用 Cypher,我如何找到具有 x 或更多不同类型关系的节点,并且连接到 y 或更多不同节点?
例如,a:Person 可以通过 'family'、'friend'、'coworker' 类型的关系连接到 b:Person。
我们如何找到一个,使得:
- a 有 2 种或更多不同的关系类型,
- a 与至少 10 个人有联系
- a 有 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
使用 Cypher,我如何找到具有 x 或更多不同类型关系的节点,并且连接到 y 或更多不同节点?
例如,a:Person 可以通过 'family'、'friend'、'coworker' 类型的关系连接到 b:Person。
我们如何找到一个,使得:
- a 有 2 种或更多不同的关系类型,
- a 与至少 10 个人有联系
- a 有 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