密码查询之间的区别。 (neo4j 电影数据库)
Difference between Cypher Queries. (neo4j movie db)
我正在做 :play intro-neo4j-exercises
中的练习(练习 4.10)。
一切似乎都很好,但我无法准确理解这两个查询之间的区别。有人可以详细说明吗?
MATCH path = (p:Person)-[:PRODUCED]->(m:Movie)
WHERE NOT EXISTS( (p)-[:DIRECTED]->(:Movie) )
RETURN p.name, m.title
Returns:
|"a.name" │"m.title" │
╞══════════════╪════════════════════════╡
│"Joel Silver" │"The Matrix" │
├──────────────┼────────────────────────┤
│"Joel Silver" │"The Matrix Reloaded" │
├──────────────┼────────────────────────┤
│"Joel Silver" │"The Matrix Revolutions"│
├──────────────┼────────────────────────┤
│"Stefan Arndt"│"Cloud Atlas" │
├──────────────┼────────────────────────┤
│"Joel Silver" │"V for Vendetta" │
├──────────────┼────────────────────────┤
│"Joel Silver" │"Speed Racer" │
├──────────────┼────────────────────────┤
│"Joel Silver" │"Ninja Assassin" │
└──────────────┴────────────────────────┘
同时:
MATCH (p:Person)-[:PRODUCED]->(m:Movie)
WHERE NOT EXISTS( (p)-[:DIRECTED]->(m) )
RETURN p.name, m.title
RETURNS:
╒═════════════════╤════════════════════════╕
│"a.name" │"m.title" │
╞═════════════════╪════════════════════════╡
│"Joel Silver" │"The Matrix" │
├─────────────────┼────────────────────────┤
│"Joel Silver" │"The Matrix Reloaded" │
├─────────────────┼────────────────────────┤
│"Joel Silver" │"The Matrix Revolutions"│
├─────────────────┼────────────────────────┤
│"Nora Ephron" │"When Harry Met Sally" │
├─────────────────┼────────────────────────┤
│"Stefan Arndt" │"Cloud Atlas" │
├─────────────────┼────────────────────────┤
│"Lana Wachowski" │"V for Vendetta" │
├─────────────────┼────────────────────────┤
│"Lilly Wachowski"│"V for Vendetta" │
├─────────────────┼────────────────────────┤
│"Joel Silver" │"V for Vendetta" │
├─────────────────┼────────────────────────┤
│"Joel Silver" │"Speed Racer" │
├─────────────────┼────────────────────────┤
│"Lana Wachowski" │"Ninja Assassin" │
├─────────────────┼────────────────────────┤
│"Joel Silver" │"Ninja Assassin" │
├─────────────────┼────────────────────────┤
│"Lilly Wachowski"│"Ninja Assassin" │
└─────────────────┴────────────────────────┘
第一个查询找到 Person
PRODUCED
Movie m
,但没有导演 任何 电影。第二个查询找到 Person
s who PRODUCED
the Movie m
but did not direct that particular Movie m
。您知道这一点是因为在第二个查询中,WHERE
子句中使用了绑定变量 m
,而在第一个查询中,[=18= 中仅使用了标签 :Movie
] 条款。
顺便说一下,第一个查询的 path =
部分什么都不做。
我正在做 :play intro-neo4j-exercises
中的练习(练习 4.10)。
一切似乎都很好,但我无法准确理解这两个查询之间的区别。有人可以详细说明吗?
MATCH path = (p:Person)-[:PRODUCED]->(m:Movie)
WHERE NOT EXISTS( (p)-[:DIRECTED]->(:Movie) )
RETURN p.name, m.title
Returns:
|"a.name" │"m.title" │
╞══════════════╪════════════════════════╡
│"Joel Silver" │"The Matrix" │
├──────────────┼────────────────────────┤
│"Joel Silver" │"The Matrix Reloaded" │
├──────────────┼────────────────────────┤
│"Joel Silver" │"The Matrix Revolutions"│
├──────────────┼────────────────────────┤
│"Stefan Arndt"│"Cloud Atlas" │
├──────────────┼────────────────────────┤
│"Joel Silver" │"V for Vendetta" │
├──────────────┼────────────────────────┤
│"Joel Silver" │"Speed Racer" │
├──────────────┼────────────────────────┤
│"Joel Silver" │"Ninja Assassin" │
└──────────────┴────────────────────────┘
同时:
MATCH (p:Person)-[:PRODUCED]->(m:Movie)
WHERE NOT EXISTS( (p)-[:DIRECTED]->(m) )
RETURN p.name, m.title
RETURNS:
╒═════════════════╤════════════════════════╕
│"a.name" │"m.title" │
╞═════════════════╪════════════════════════╡
│"Joel Silver" │"The Matrix" │
├─────────────────┼────────────────────────┤
│"Joel Silver" │"The Matrix Reloaded" │
├─────────────────┼────────────────────────┤
│"Joel Silver" │"The Matrix Revolutions"│
├─────────────────┼────────────────────────┤
│"Nora Ephron" │"When Harry Met Sally" │
├─────────────────┼────────────────────────┤
│"Stefan Arndt" │"Cloud Atlas" │
├─────────────────┼────────────────────────┤
│"Lana Wachowski" │"V for Vendetta" │
├─────────────────┼────────────────────────┤
│"Lilly Wachowski"│"V for Vendetta" │
├─────────────────┼────────────────────────┤
│"Joel Silver" │"V for Vendetta" │
├─────────────────┼────────────────────────┤
│"Joel Silver" │"Speed Racer" │
├─────────────────┼────────────────────────┤
│"Lana Wachowski" │"Ninja Assassin" │
├─────────────────┼────────────────────────┤
│"Joel Silver" │"Ninja Assassin" │
├─────────────────┼────────────────────────┤
│"Lilly Wachowski"│"Ninja Assassin" │
└─────────────────┴────────────────────────┘
第一个查询找到 Person
PRODUCED
Movie m
,但没有导演 任何 电影。第二个查询找到 Person
s who PRODUCED
the Movie m
but did not direct that particular Movie m
。您知道这一点是因为在第二个查询中,WHERE
子句中使用了绑定变量 m
,而在第一个查询中,[=18= 中仅使用了标签 :Movie
] 条款。
顺便说一下,第一个查询的 path =
部分什么都不做。