统计 Neo4j 数组里面的数据 属性
Count the data inside the Neo4j array property
运行 Neo4j 附带的迷你电影图的以下查询抛出 12 个结果,实际上是错误的:
MATCH (actor:Person{name:"Tom Hanks"})-[role:ACTED_IN]->(movie) return count(role) as roles
从"Tom Hanks"节点到电影节点确实有12个关系,但是ACTED_IN关系的属性作用其实是一个数组,可以包含多个值(一个演员在一部电影中扮演多个角色)。
所以我的问题是如何计算角色数组中的所有值以及演员扮演的角色总数?
以下应该为您完成:
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
输出将是:
roles: 12, totalRoleCount: 20
运行 Neo4j 附带的迷你电影图的以下查询抛出 12 个结果,实际上是错误的:
MATCH (actor:Person{name:"Tom Hanks"})-[role:ACTED_IN]->(movie) return count(role) as roles
从"Tom Hanks"节点到电影节点确实有12个关系,但是ACTED_IN关系的属性作用其实是一个数组,可以包含多个值(一个演员在一部电影中扮演多个角色)。
所以我的问题是如何计算角色数组中的所有值以及演员扮演的角色总数?
以下应该为您完成:
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
输出将是:
roles: 12, totalRoleCount: 20