neo4j找出某人在所有电影中扮演的角色

neo4j找出某人在所有电影中扮演的角色,neo4j,cypher,database,nosql,Neo4j,Cypher,Database,Nosql,我使用数据库cineasts(演员和电影)。它有关系(:ACTOR)-[:ACTED_IN]->(:Movie)。现在我想找到在《abc》主演的所有电影中都演过的演员 我的想法是首先使用COLLECT获得“abc”的电影集。然后使用ALL()查找所需的参与者。但是我不知道如何在ALL()中编写过滤器。如何编写它?看看这篇关于Neo4j知识库的文章 您要查找的查询类型将是类似的 例如,使用前面提到的第一种技术,我们可以执行如下操作: MATCH (abc:Actor{name:'abc'})-[:

我使用数据库cineasts(演员和电影)。它有关系(:ACTOR)-[:ACTED_IN]->(:Movie)。现在我想找到在《abc》主演的所有电影中都演过的演员


我的想法是首先使用COLLECT获得“abc”的电影集。然后使用ALL()查找所需的参与者。但是我不知道如何在ALL()中编写过滤器。如何编写它?

看看这篇关于Neo4j知识库的文章

您要查找的查询类型将是类似的

例如,使用前面提到的第一种技术,我们可以执行如下操作:

MATCH (abc:Actor{name:'abc'})-[:ACTED_IN]->(m:Movie)
WITH abc, collect(distinct m) as movies
WITH abc, movies, size(movies) as movieCnt
UNWIND movies as m
MATCH (m)<-[:ACTED_IN]-(a:Actor)
WHERE abc <> a
WITH a, collect(distinct m) as commonMovies, movieCnt
WHERE size(commonMovies) = movieCnt
RETURN a
MATCH (abc:Actor{name:'abc'})-[:ACTED_IN]->(m:Movie)
WITH abc, collect(distinct m) as movies
WITH abc, movies, head(movies) as first
MATCH (first)<-[:ACTED_IN]-(a:Actor)
WHERE abc <> a AND ALL(m in movies WHERE (m)<-[:ACTED_IN]-(a))
RETURN a
MATCH(abc:Actor{name:'abc})-[:ACTED_IN]->(m:Movie)
通过abc,收集(不同的m)作为电影
以abc、电影、大小(电影)作为电影素材
以m为单位展开电影
比赛(m)(m:电影)
通过abc,收集(不同的m)作为电影
以abc、电影、head(电影)为第一
比赛(第一场)