Neo4j如何查询关联超过X个typeB类节点的typeA类节点?
错误原因
你原有查询的WITH子句同时将Parent和Child作为分组维度,count(R)统计的是每一对Parent、Child节点之间的关系数量,而非单个Parent节点关联的typeB节点总数,因此返回的ChildCount大多为1,和你观察到的现象一致。
修正方案
场景1:仅返回符合条件的typeA节点和关联的typeB节点总数
MATCH (Parent:typeA)--(Child:typeB) WITH Parent, count(DISTINCT Child) AS ChildCount WHERE ChildCount > 3 // 可替换为你需要的阈值X RETURN Parent, ChildCount
场景2:需要同时返回该typeA节点关联的所有typeB节点详情
MATCH (Parent:typeA)--(Child:typeB) WITH Parent, collect(DISTINCT Child) AS ChildList, count(DISTINCT Child) AS ChildCount WHERE ChildCount > 3 RETURN Parent, ChildList, ChildCount
补充说明
- 上述语句中的
--默认匹配任意方向、任意类型的关系,和你原有写法中的-[R]-效果一致,无需额外声明关系变量时可以简化写法。 - 如果你需要统计的是typeA和typeB节点之间的关系总数量(而非节点数量),将
count(DISTINCT Child)替换为count(*)即可,注意WITH子句不要携带Child字段。
内容的提问来源于stack exchange,提问作者ablaszkiewicz1
相关产品推荐
相关产品推荐

