我们正在评估是否在我们的项目中使用neo4j之类的图形数据库。为了评估,我们需要知道在neo4j中是否可以进行特定的邻域聚合查询。 这是我们正在思考的图形设计。 我们有两种节点如下 - 用户 - 电影
只有用户节点和电影节点之间存在边缘。如果用户已为电影评级,则存在节点。
我们想要编写一个查询,根据我们对用户邻居的聚合来计算所有电影的星级。
例如,用户A将电影m1评为2,将m2评为3 用户B将电影m1评为1,将m3评为5
所以结果集是
m1 - (2+1)/2 = 1.5
m2 - 3/1 = 3
m3 - 5/1 = 5
答案 0 :(得分:1)
这很简单:
MATCH (:User)-[r:RATED]->(movie:Movie)
RETURN movie, AVG(r.rating) AS avg_rating;
假设数据模型包含User
和Movie
个节点,以及包含RATED
属性的rating
个关系。
(另外,由于在此数据模型中只有User
个节点可以为电影评分,因此您可以将MATCH
模式简化为:()-[r:RATED]->(movie:Movie)
,这将执行得更快。)