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

时间:2015-04-15 12:10:50

标签: graph neo4j cypher

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

例如,a:人可以通过“家庭”,“朋友”,“同事”类型的关系连接到b:Person。

我们如何找到这样的:

  • a有两种或更多种不同的关系类型,
  • a与至少10个其他人相关

1 个答案:

答案 0 :(得分:1)

  1. a有两种或更多种不同的关系类型
  2. a与至少10个其他人相关
  3. 将此查询与中间聚合一起使用:

    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类型)

    仅适用于尺寸,您可以使用更快的路径表达式。

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