【发布时间】:2021-08-14 09:48:35
【问题描述】:
所以我有一个数据库,我想在其中检索具有“已审核”关系的结果,并在此结果中检索具有“acted_in”关系的实体,并返回演员人数最多的电影。
这是我写的代码:
MATCH (a:Person)-[r2:REVIEWED]->(movie:Movie)<-[r:ACTED_IN]-(actors:Person)
RETURN movie.title as Movie_name, count(actors) as no_of_cast
ORDER BY no_of_cast DESC
Limit 1
它返回正确的电影名称,但演员人数是评论人和演戏人的笛卡尔积。
对actors进行collect函数后得到的结果是
"The Replacements" ["Brooke Langton", "Keanu Reeves", "Orlando Jones", "Gene Hackman", "Brooke Langton", "Keanu Reeves", "Orlando Jones", "Gene Hackman", "Brooke Langton", "Keanu Reeves", "Orlando Jones", "Gene Hackman"]
它重复演员在该电影节点中出现的关系“审查”的次数。
我怎样才能避免这种情况并获得正确的演员人数,即 4。谢谢。
【问题讨论】:
-
也许您的数据库实体和关系的小架构会有所帮助?
-
@Antonin;它是电影数据库,所以它是安装 neo4j 桌面时的示例数据库。