“可选匹配”不在 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
我正在编写一个查询,以找出在 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