Cypher如何将节点出边关联节点数量设置为节点自身属性
报错原因说明
- 尝试1报错:Cypher不支持在SET子句中直接使用count()这类聚合函数,聚合计算必须先通过WITH子句完成,才能将结果用于属性赋值。
- 尝试2报错:WITH子句会清空之前的查询上下文,只有显式写在WITH后的变量才能被后续子句调用,你没有将n放到WITH的返回列表中,所以SET子句无法识别变量n。
正确实现语句
你需要统计不同的目标节点,所以要加上DISTINCT去重,避免同一对节点间多关系被重复计数:
// 如果要给所有节点计算出边指向的不同节点数 MATCH (n)-->(m) WITH n, count(DISTINCT m) AS out_node_count SET n.out = out_node_count RETURN n.name, n.out
如果只需计算指定节点A的属性,可在MATCH中添加节点过滤条件,避免全库扫描,示例:
// 假设节点A有name属性值为"A" MATCH (n {name: 'A'})-->(m) WITH n, count(DISTINCT m) AS out_node_count SET n.out = out_node_count RETURN n.name, n.out
内容的提问来源于stack exchange,提问作者Ooker
相关产品推荐
相关产品推荐

