两个密码查询之间的行为差​​异

时间:2013-08-17 17:12:48

标签: neo4j cypher

以下查询返回8个正确的小组。

查询

START league=node:League(name='September League') 
MATCH (teams)-[:CONTESTED_IN]->league
RETURN teams.name

结果

teams.name
Kakatiya Kings
Broncos
Dunwoody Blues
DOE Spikers
Atlanta Spikers
Wild Claws
Alpharetta One
Camden Rockers

但是,当我将级别添加为另一个起始节点时,虽然不在任何地方使用它,但它会使每个团队重复两次。不知道为什么行为的差异

查询

START league=node:League(name='September League'), level=node:Level(name='Quarterfinal') 
MATCH (teams)-[:CONTESTED_IN]->league
RETURN teams.name

结果

teams.name
Kakatiya Kings
Broncos
Dunwoody Blues
DOE Spikers
Atlanta Spikers
Wild Claws
Alpharetta One
Camden Rockers
Kakatiya Kings
Broncos
Dunwoody Blues
DOE Spikers
Atlanta Spikers
Wild Claws
Alpharetta One
Camden Rockers

2 个答案:

答案 0 :(得分:1)

由于leaguelevel之间没有关系,因此您获得的是结果的交叉积,即每个节点在节点:Level中编入索引team.name。因此,如果在索引中找到两个节点,结果是正确的。

如果您将查询更改为

RETURN teams.name, level
你可以检查一下。 要获得独特的结果,请添加distinct

RETURN distinct(teams.name)

答案 1 :(得分:0)

您使用的是哪个版本?试图在http://console.neo4j.org/r/6lvxd8中生成错误结果并不会给我任何结果。如果您可以在控制台中重新创建它,请提出问题!