在Neo4j附带的迷你电影图上运行以下查询会产生12个结果,这实际上是错误的:
MATCH (actor:Person{name:"Tom Hanks"})-[role:ACTED_IN]->(movie) return count(role) as roles
汤姆汉克斯"确实有12个关系。节点到电影节点,但ACTED_IN关系的属性角色实际上是一个数组,它可以包含多个值(一个actor在一个电影中有多个角色)。
所以我的问题是如何计算角色数组中的所有值以及获取actor扮演的角色总数?
答案 0 :(得分:1)
以下内容应该为您完成:
MATCH
(actor:Person {name:"Tom Hanks"})-[role:ACTED_IN]->(movie)
WITH
length(role.roles) as roleCount, actor
WITH
sum(roleCount) as totalRoleCount, actor
MATCH
(actor)-[role:ACTED_IN]->(movie)
WITH
count(role) as roles, totalRoleCount
RETURN
roles, totalRoleCount
输出将是:
角色:12,totalRoleCount:20