【问题标题】:How to get a list of movies that pairs of actors performed in together using Neo4j?如何使用 Neo4j 获取演员对一起表演的电影列表?
【发布时间】:2019-01-28 03:37:09
【问题描述】:

我有两种节点类型:Actor 和 Movie。
我想按照演员出演的电影对演员进行分组。
这就是我创建 Cypher 查询的原因:

MATCH (a1:Actor)-[:performed_in]->(m:Movie)<-[:performed_in]-(a2:Actor) 
RETURN a1.name, a2.name, 
COLLECT(DISTINCT m.name)

很遗憾,结果不是我需要的。
问题是我有一张这样的桌子:

a1       a2       m
Sam      Joe      Movie1, Movie2
Joe      Sam      Movie1, Movie2

如您所见,我有两行在这种情况下表示相同。
我怎样才能摆脱它?

【问题讨论】:

  • 您的意思是您想要电影名称和该电影的演员名单吗?

标签: neo4j cypher


【解决方案1】:

我知道这感觉像是一个 hack,但是怎么样:

MATCH (a1:Actor)-[:performed_in]->(m:Movie)<-[:performed_in]-(a2:Actor)
WHERE id(a1) < id(a2)
RETURN a1.name, a2.name, COLLECT(DISTINCT m.name)

坚持一个节点的内部ID小于另一个节点会给你我认为你想要的结果。

【讨论】:

    猜你喜欢
    • 2019-04-16
    • 2015-06-24
    • 2015-06-20
    • 2017-01-01
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    相关资源
    最近更新 更多