Neo4J Movie-Graph - 同龄演员
Neo4J Movie-Graph - actors with same age
我想在 Neo4J 中用提供的电影数据集 (: play movie-graph) 分析那些同年出生的演员,然后执行一个查询,让我获得哪些同龄演员一起工作过。为此,我尝试在同年出生的演员之间的数据库中创建关系类型“HAS_SAME_AGE”,但它给了我一个错误,我不知道如何继续。
这是我写的:
MATCH (a:Person),(b:Person) WHERE a.born=b.born WITH a AS PersonA, b AS PersonB MERGE (PersonA)- [:HAS_SAME_AGE]-(PersonB)
有人可以帮我填写正确的代码吗?如有任何帮助,我们将不胜感激!
除非有充分的理由(例如,您不能否则满足严格的性能要求)。
很容易搞定所有同年出生的演员,没有关系。例如:
MATCH (p:Person)
RETURN p.born AS year, COLLECT(p) AS actors
因此,除非您迫切需要更快地获取相同信息,否则您应该只使用上述类型的查询,而不是存储冗余关系。
但是,如果您确实需要添加关系,您可以这样做:
MATCH (p:Person)
WITH p.born AS year, COLLECT(p) AS ps
UNWIND apoc.coll.combinations(ps, 2) AS pair
WITH pair[0] AS p1, pair[1] AS p2
MERGE (p1)-[:HAS_SAME_AGE]-(p2)
APOC 函数apoc.coll.combinations 用于生成不同的同一年出生的演员对。
我想在 Neo4J 中用提供的电影数据集 (: play movie-graph) 分析那些同年出生的演员,然后执行一个查询,让我获得哪些同龄演员一起工作过。为此,我尝试在同年出生的演员之间的数据库中创建关系类型“HAS_SAME_AGE”,但它给了我一个错误,我不知道如何继续。
这是我写的:
MATCH (a:Person),(b:Person) WHERE a.born=b.born WITH a AS PersonA, b AS PersonB MERGE (PersonA)- [:HAS_SAME_AGE]-(PersonB)
有人可以帮我填写正确的代码吗?如有任何帮助,我们将不胜感激!
除非有充分的理由(例如,您不能否则满足严格的性能要求)。
很容易搞定所有同年出生的演员,没有关系。例如:
MATCH (p:Person) RETURN p.born AS year, COLLECT(p) AS actors
因此,除非您迫切需要更快地获取相同信息,否则您应该只使用上述类型的查询,而不是存储冗余关系。
但是,如果您确实需要添加关系,您可以这样做:
MATCH (p:Person) WITH p.born AS year, COLLECT(p) AS ps UNWIND apoc.coll.combinations(ps, 2) AS pair WITH pair[0] AS p1, pair[1] AS p2 MERGE (p1)-[:HAS_SAME_AGE]-(p2)
APOC 函数apoc.coll.combinations 用于生成不同的同一年出生的演员对。