neo4j中的邻域聚合查询

时间:2018-06-14 00:40:34

标签: neo4j cypher

我们正在评估是否在我们的项目中使用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

1 个答案:

答案 0 :(得分:1)

这很简单:

MATCH (:User)-[r:RATED]->(movie:Movie)
RETURN movie, AVG(r.rating) AS avg_rating;

假设数据模型包含UserMovie个节点,以及包含RATED属性的rating个关系。

(另外,由于在此数据模型中只有User个节点可以为电影评分,因此您可以将MATCH模式简化为:()-[r:RATED]->(movie:Movie),这将执行得更快。)