如何在Neo4j中筛选分组后count(theme)不相等的title
在Neo4j中筛选同一title下count(theme)数值不一致的记录
解决方案
假设你已经通过分组查询得到了包含title、count(theme)、x.name的结果,要筛选出同一title下不同x.name对应的count(theme)数值不相等的title,可以通过以下Cypher查询实现:
直接基于原查询扩展
如果你的原查询是匹配节点并分组的语句,直接在后面追加筛选逻辑即可:
// 替换成你自己的原MATCH和分组逻辑 MATCH (m:Movie)-[:HAS_THEME]->(theme), (m)-[:BELONGS_TO]->(x:Category) WITH m.title AS title, x.name AS xName, count(theme) AS themeCount // 核心筛选逻辑 WITH title, collect(themeCount) AS counts WHERE size(DISTINCT counts) > 1 RETURN title
基于已有结果集处理
如果你已经有了示例中的结果表,也可以把结果集作为输入处理:
// 将你的原查询结果替换这里的数组内容 WITH [ {title: "Game of thrones", count:8, xName:"X1"}, {title: "Game of thrones", count:4, xName:"X2"}, {title: "Game of empire", count:4, xName:"X1"}, {title: "Game of empire", count:4, xName:"X2"} ] AS originalResults UNWIND originalResults AS result WITH result.title AS title, collect(result.count) AS counts WHERE size(DISTINCT counts) > 1 RETURN title
逻辑说明
collect(themeCount) AS counts:把同一个title下所有的count(theme)值收集成一个列表size(DISTINCT counts) > 1:判断这个列表去重后的长度大于1,说明该title下存在不同的count(theme)数值- 最后返回符合条件的
title
内容的提问来源于stack exchange,提问作者ebenezer popoola
相关产品推荐
相关产品推荐

