“可选匹配”不在 Neo4j 中返回空值

'optional match" not returning null values within Neo4j

我正在编写一个查询,以找出在 movie.

中也有 acted 的所有 directors

我编写了以下查询来实现该结果:

optional match (director:Person)-[:DIRECTED]->(movie:Movie)<-[:ACTED_IN]-(director)
return director.name, movie.title

查询未 returning 导演姓名的 null 值。我的理解是 "optional match" act as an "outer join" 并且它也应该 return 空值。

首先,您要查询从人到电影再到演员的整个路径,因此如果不存在此类数据,可选匹配将为 return null。让我们说:

optional match (director:Person)-[:DIRECTS]->(movie:Movie)<-[:ACTS]-(director)
return director.name, movie.title

╒═══════════════╤═════════════╕
│"director.name"│"movie.title"│
╞═══════════════╪═════════════╡
│null           │null         │
└───────────────┴─────────────┘

当文档说可选匹配是“外部连接”时,这意味着您应该这样做:

   match (director:Person)-[:DIRECTED]->(movie:Movie)
   optional match (movie)<-[:ACTED_IN]-(director)
   return director.name, movie.title

参考:https://neo4j.com/docs/cypher-manual/current/clauses/optional-match/#optional-relationships