计算Neo4j数组属性中的数据

时间:2015-01-13 10:20:28

标签: neo4j cypher

在Neo4j附带的迷你电影图上运行以下查询会产生12个结果,这实际上是错误的:

MATCH (actor:Person{name:"Tom Hanks"})-[role:ACTED_IN]->(movie) return count(role) as roles

汤姆汉克斯"确实有12个关系。节点到电影节点,但ACTED_IN关系的属性角色实际上是一个数组,它可以包含多个值(一个actor在一个电影中有多个角色)。

所以我的问题是如何计算角色数组中的所有值以及获取actor扮演的角色总数?

1 个答案:

答案 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