Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cypher(Neo4j)-查找所有关系,只要节点中的一个关系满足条件,而不考虑搜索路径?_Neo4j_Cypher_Graph Databases - Fatal编程技术网

Cypher(Neo4j)-查找所有关系,只要节点中的一个关系满足条件,而不考虑搜索路径?

Cypher(Neo4j)-查找所有关系,只要节点中的一个关系满足条件,而不考虑搜索路径?,neo4j,cypher,graph-databases,Neo4j,Cypher,Graph Databases,请原谅这个不好的标题,我是一个基本上使用密码和图形数据库的初学者。我不确定标题是否完全符合我的要求,如果你有更好的标题,请告诉我 我有一个非常简单的图形设置,包含用户节点和电影节点,从用户到电影之间存在一种关系,称为:Review,它有一个评级属性,该属性包含用户评级(1.0-5.0)。见下图: 我认为这种设计对于电影系统来说是有意义的,因为它可以捕获用户评论。我不认为评论应该作为它们自己的节点存在,因为它们在图形中更好地表示为用户(评论者)和电影之间的关系。更不用说关系中存在的所有属性都是为

请原谅这个不好的标题,我是一个基本上使用密码和图形数据库的初学者。我不确定标题是否完全符合我的要求,如果你有更好的标题,请告诉我

我有一个非常简单的图形设置,包含
用户
节点和
电影
节点,从
用户
电影
之间存在一种关系,称为
:Review
,它有一个
评级
属性,该属性包含用户评级(1.0-5.0)。见下图:

我认为这种设计对于电影系统来说是有意义的,因为它可以捕获用户评论。我不认为评论应该作为它们自己的节点存在,因为它们在图形中更好地表示为用户(评论者)和电影之间的关系。更不用说关系中存在的所有属性都是为了表示关系中的比例/权重/元数据,这是它们的一个很好的用例。然而,由于这种设计,我一直很难想出一个密码查询来执行以下操作:

  • 查找至少有一部评论评级低于3的前十部电影
也就是说,我们希望根据电影的平均评分对电影进行排序,但是至少有一个评论必须低于3.0分。我用来根据电影的平均评级对电影进行排序的查询是:

MATCH (movie:Movie)<-[review:REVIEWED]-(user:User) 
RETURN movie.movieTitle, avg(review.rating) as avgRating 
ORDER BY avgRating DESC 
LIMIT 10

MATCH(movie:movie)您需要一个两部分的查询,首先匹配评论分数低于E 3的电影,然后平均它们的收视率

MATCH (movie:Movie)<-[review:REVIEWED]-(:User) 
WHERE review.rating < 3
WITH DISTINCT movie
MATCH (movie)<-[review:REVIEWED]-(:User)
RETURN avg(review.rating) as avgRating 
ORDER BY avgRating DESC 
LIMIT 10

MATCH(movie:movie)一个小小的改进,在第3行,您应该将
与DISTINCT movie一起使用
,这样您就不会为每个DISTINCT movie生成多行,因为这可能会扭曲您的结果。没问题!哦,在这种情况下不需要重新命名,因为
movie
变量已经是您想要的,所以您可以将
作为movie
部分删除。
MATCH (movie:Movie)<-[review:REVIEWED]-(:User) 
WHERE review.rating < 3
WITH DISTINCT movie
MATCH (movie)<-[review:REVIEWED]-(:User)
RETURN avg(review.rating) as avgRating 
ORDER BY avgRating DESC 
LIMIT 10