Neo4j聚合取决于关系属性

时间:2015-01-03 15:13:32

标签: neo4j relationship data-modeling aggregation

我想创建一个数据库,其中a:Person可以根据标准对a:Movie进行评分。 我希望标准是动态的:

例如约翰可以为泰坦尼克号3.8 / 5表演,特效4/5。 安娜可以在表演上评价泰坦尼克号4/5,在装饰上评价5/5

目前,我的策略是:

  • 两种类型的节点:人物和:电影
  • a Relationship:Person - [:Rate {criteria:string,grade:float}] - > :电影

我的问题是: 有没有办法密码查询按标准汇总成绩的电影的评分?

对电影泰坦尼克号的这个查询应该返回如下内容:

[ {criteria: acting, avg_m.grade : 3.9},{criteria: special effects, avg_m.grade : 4},{criteria: decor, avg_m.grade : 5}]

1 个答案:

答案 0 :(得分:2)

您需要使用Cypher的avg功能。假设您想要标题为" abc"的电影的平均值:

MATCH (:Movie {title:'abc'})<-[r:Rate]-()
RETURN r.criteria as criteria, avg(r.grade) as avg_grade