如何编写Cypher查询获取关系数超阈值节点及子节点并返回关系度数
Cypher查询修正方案
你可以直接使用如下调整后的查询,完全符合你要求的返回格式:
MATCH (Parent:FullAddress)-[R1]-(Child) MATCH (Child)-[R2]-() WITH Parent, Child, type(R1) AS R, count(R2) AS Degree WITH Parent, count(Child) AS childrenCount, collect({child: Child, relType: R, degree: Degree}) AS childInfoList WHERE childrenCount > 10 UNWIND childInfoList AS info RETURN Parent, info.child AS Child, info.relType AS R, info.degree AS Degree
逻辑说明
- 先匹配
FullAddress标签父节点、关联子节点及二者的关系 - 遍历每个子节点的所有关联关系,统计得到每个子节点的总关系度数
- 按父节点聚合统计其关联的子节点总数,过滤掉子节点数不足10的父节点(你可以自行修改WHERE后的阈值为你需要的X)
- 最后展开聚合存储的子节点信息,返回你要求的四个字段
可选调整
如果需要统计子节点特定方向/特定类型的关系度数,可以修改第二个MATCH语句的匹配规则,比如仅统计子节点的出向关系可以写成MATCH (Child)-[R2]->(),仅统计类型为OWN的关系可以写成MATCH (Child)-[R2:OWN]-()。
内容的提问来源于stack exchange,提问作者ablaszkiewicz1
相关产品推荐
相关产品推荐

