Neo4j 聚合取决于关系属性
Neo4j aggregation depending on relationship property
我想建立一个数据库,其中 :Person 可以根据标准对 :Movie 进行评分。
我希望标准是动态的:
例如,约翰可以为泰坦尼克号的表演评分 3.8/5,为特效评分 4/5。
安娜可以给泰坦尼克号的表演评分 4/5,装饰评分 5/5
目前,我的策略是:
- 两种类型的节点:人物和:电影
- a 关系:人物 -[:评分 {标准:字符串,等级:浮点数}]->:电影
我的问题是:
有没有办法通过密码查询电影的评分并按标准汇总评分?
关于电影泰坦尼克号的查询应该return类似于:
[ {criteria: acting, avg_m.grade : 3.9},{criteria: special effects, avg_m.grade : 4},{criteria: decor, avg_m.grade : 5}]
您需要使用 Cypher 的 avg
函数。假设您想对标题为 "abc":
的电影求平均值
MATCH (:Movie {title:'abc'})<-[r:Rate]-()
RETURN r.criteria as criteria, avg(r.grade) as avg_grade
我想建立一个数据库,其中 :Person 可以根据标准对 :Movie 进行评分。 我希望标准是动态的:
例如,约翰可以为泰坦尼克号的表演评分 3.8/5,为特效评分 4/5。 安娜可以给泰坦尼克号的表演评分 4/5,装饰评分 5/5
目前,我的策略是:
- 两种类型的节点:人物和:电影
- a 关系:人物 -[:评分 {标准:字符串,等级:浮点数}]->:电影
我的问题是: 有没有办法通过密码查询电影的评分并按标准汇总评分?
关于电影泰坦尼克号的查询应该return类似于:
[ {criteria: acting, avg_m.grade : 3.9},{criteria: special effects, avg_m.grade : 4},{criteria: decor, avg_m.grade : 5}]
您需要使用 Cypher 的 avg
函数。假设您想对标题为 "abc":
MATCH (:Movie {title:'abc'})<-[r:Rate]-()
RETURN r.criteria as criteria, avg(r.grade) as avg_grade