我正在尝试关注neo4j的视频教程,该教程使用默认情况下在neo4j中找到的电影图形数据库。
在本教程中,有一项任务要求检索在大部分电影中播放的演员,按计数DESC排序并限制为5。
教程解决方案与我的结果不符,有些东西我不明白。当我使用类似的Cypher请求时,我的结果会重复电影。
教程解决方案:
MATCH(演员:人) - [:ACTED_IN] - ()RETURN actor.name,
COUNT(*)为COUNT ORDER BY COUNT DESC LIMIT 5;
在我的解决方案中,我得到重复:
MATCH(演员:人) - [:ACTED_IN] - (电影:电影)RETURN actor.name,
“梅格瑞恩”[“Top Gun”,“你有邮件”,“在西雅图失眠”,“Joe Versus the Volcano”,“当Harry遇到Sally”,“Top枪“,”你有邮件“,”在西雅图失眠“,”Joe Versus the Volcano“,”当Harry遇到Sally“,”Top Gun“,”你有邮件“ ,“在西雅图失眠”,“Joe Versus the Volcano”,“当Harry遇到莎莉”时,
收集(movie.title),COUNT(*)为COUNT ORDER BY COUNT DESC LIMIT 5;
当我使用时:
MATCH(演员:人) - [:ACTED_IN] - (电影:电影)RETURN actor.name,
收集(DISTINCT movie.title),COUNT(*)作为COUNT ORDER BY COUNT DESC LIMIT 5;
答案 0 :(得分:0)
我在教程中遇到了类似的问题 - 使用Cypher CREATE语句多次添加相同的节点非常容易。也许这也发生在你身上了?
也许只是跑:
MATCH(n)返回n;
然后眼球整个图表 - 教程应该小到足以做到这一点&你会看到你是否有重复。
答案 1 :(得分:0)
您可以在distinct
内使用count
:
MATCH (actor:Person)-[:ACTED_IN]-(movie:Movie)
RETURN
actor.name,
COLLECT(DISTINCT movie.title),
COUNT(DISTINCT movie) as COUNT
ORDER BY COUNT DESC LIMIT 5;
P.S。在这种情况下,COUNT(*)
的结果是模式的计数。