习题5.12:使用模式理解改写Cypher查询语句
用模式理解改写后的Cypher查询
贴近原查询返回结构的改写版本
MATCH (m:Movie) WHERE size([(d:Person)-[:DIRECTED]->(m) | d]) >= 2 OPTIONAL MATCH (p:Person)-[:REVIEWED]->(m) RETURN m.title, p.name
说明
- 利用模式理解
[(d:Person)-[:DIRECTED]->(m) | d]直接生成当前电影所有导演的节点列表,通过size()函数获取导演数量,无需额外的WITH子句传递计算结果,逻辑更紧凑。 - 保留原查询的返回结构:每一条评论对应一行结果,无评论的电影会返回
p.name为null的行。
另一种返回评论者列表的版本(可选)
如果希望每个电影仅返回一行,同时将所有评论者姓名以列表形式展示,可使用以下写法:
MATCH (m:Movie) WHERE size([(d:Person)-[:DIRECTED]->(m) | d]) >= 2 RETURN m.title, [(p:Person)-[:REVIEWED]->(m) | p.name] AS reviewers
内容的提问来源于stack exchange,提问作者muhammedhyder
相关产品推荐
相关产品推荐

