Neo4j 在方向关系上重复结果
Neo4j duplicate results on directional relationship
为什么在查询中使用方向关系时会得到重复的结果?
让我们按照 Neo4j 在示例中使用电影的惯例,我有一位导演在两部不同的电影中担任两个角色,一部是他导演的,另一部是制片人:
create (M1:MOVIE {name:'movie 1'}),
(M2:MOVIE {name:'movie 2'}),
(D1:DIRECTOR {name:'director 1'}),
(D1)-[:PRODUCED]->(M2), (D1)-[:DIRECTED]->(M1)
让我们得到所有执导和制作电影的导演
MATCH (m1:MOVIE)<-[DIRECTED]-(d1:DIRECTOR)-[PRODUCED]->(m2:MOVIE)
RETURN m1, d1, m2
结果重复:
╒══════════════════╤═════════════════════╤══════════════════╕
│"m1" │"d1" │"m2" │
╞══════════════════╪═════════════════════╪══════════════════╡
│{"name":"movie 2"}│{"name":"director 1"}│{"name":"movie 1"}│
├──────────────────┼─────────────────────┼──────────────────┤
│{"name":"movie 1"}│{"name":"director 1"}│{"name":"movie 2"}│
└──────────────────┴─────────────────────┴──────────────────┘
其实也是错的,我以为m1只是导演的电影,所以第二行错了!
指定关系类型时,您应该在关系类型名称前使用 :
。你忘记了:
尝试一下(注意 DIRECTED
和 PRODUCED
之前的 :
:
MATCH (m1:MOVIE) <-[:DIRECTED]- (d1:DIRECTOR) -[:PRODUCED]-> (m2:MOVIE)
RETURN m1, d1, m2
结果:
╒══════════════════╤═════════════════════╤══════════════════╕
│"m1" │"d1" │"m2" │
╞══════════════════╪═════════════════════╪══════════════════╡
│{"name":"movie 1"}│{"name":"director 1"}│{"name":"movie 2"}│
└──────────────────┴─────────────────────┴──────────────────┘
为什么在查询中使用方向关系时会得到重复的结果?
让我们按照 Neo4j 在示例中使用电影的惯例,我有一位导演在两部不同的电影中担任两个角色,一部是他导演的,另一部是制片人:
create (M1:MOVIE {name:'movie 1'}),
(M2:MOVIE {name:'movie 2'}),
(D1:DIRECTOR {name:'director 1'}),
(D1)-[:PRODUCED]->(M2), (D1)-[:DIRECTED]->(M1)
让我们得到所有执导和制作电影的导演
MATCH (m1:MOVIE)<-[DIRECTED]-(d1:DIRECTOR)-[PRODUCED]->(m2:MOVIE)
RETURN m1, d1, m2
结果重复:
╒══════════════════╤═════════════════════╤══════════════════╕
│"m1" │"d1" │"m2" │
╞══════════════════╪═════════════════════╪══════════════════╡
│{"name":"movie 2"}│{"name":"director 1"}│{"name":"movie 1"}│
├──────────────────┼─────────────────────┼──────────────────┤
│{"name":"movie 1"}│{"name":"director 1"}│{"name":"movie 2"}│
└──────────────────┴─────────────────────┴──────────────────┘
其实也是错的,我以为m1只是导演的电影,所以第二行错了!
指定关系类型时,您应该在关系类型名称前使用 :
。你忘记了:
尝试一下(注意 DIRECTED
和 PRODUCED
之前的 :
:
MATCH (m1:MOVIE) <-[:DIRECTED]- (d1:DIRECTOR) -[:PRODUCED]-> (m2:MOVIE)
RETURN m1, d1, m2
结果:
╒══════════════════╤═════════════════════╤══════════════════╕
│"m1" │"d1" │"m2" │
╞══════════════════╪═════════════════════╪══════════════════╡
│{"name":"movie 1"}│{"name":"director 1"}│{"name":"movie 2"}│
└──────────────────┴─────────────────────┴──────────────────┘