neo4j中的邻域聚合查询
我们正在评估是否在我们的项目中使用像neo4j这样的图形数据库。为了进行评估,我们需要知道neo4j中是否可以使用特定的邻域聚合查询。 这是我们正在思考的图形设计。 我们有两种节点,如下所示 -使用者 -电影 在用户节点和电影节点之间只存在一条边。如果用户已对电影进行分级,则存在一个节点 我们想编写一个查询,根据我们对邻居(即用户)所做的聚合计算所有电影的星级 e、 g用户A将电影m1评级为2,m2评级为3 用户B将电影m1评级为1,m3评级为5 因此,结果集将是neo4j中的邻域聚合查询,neo4j,cypher,Neo4j,Cypher,我们正在评估是否在我们的项目中使用像neo4j这样的图形数据库。为了进行评估,我们需要知道neo4j中是否可以使用特定的邻域聚合查询。 这是我们正在思考的图形设计。 我们有两种节点,如下所示 -使用者 -电影 在用户节点和电影节点之间只存在一条边。如果用户已对电影进行分级,则存在一个节点 我们想编写一个查询,根据我们对邻居(即用户)所做的聚合计算所有电影的星级 e、 g用户A将电影m1评级为2,m2评级为3 用户B将电影m1评级为1,m3评级为5 因此,结果集将是 m1 - (2+1)/2 =
m1 - (2+1)/2 = 1.5
m2 - 3/1 = 3
m3 - 5/1 = 5
这很简单:
MATCH (:User)-[r:RATED]->(movie:Movie)
RETURN movie, AVG(r.rating) AS avg_rating;
假定的数据模型具有User
和Movie
节点,以及包含rating
属性的RATED
关系
(此外,由于在此数据模型中只有
用户
节点可以对电影进行评分,因此可以将匹配
模式简化为:()-[r:RATED]->(电影:电影)
,这将执行得更快。)感谢您的回答。谢谢。只是一个后续问题。假设评级是动态的,每次我们想要计算平均评级时,评级都会不断变化。所以,我们的想法是,我们每次都从其他数据库获取评分,并动态地将其输入到图形数据库中。这可能吗?每次运行查询时,它都会看到当时提交的所有更改。欲了解更多信息。