neo4j match(匹配查询)

介绍

MATCH子句允许您指定 Neo4j 将在数据库中搜索的模式。这是将数据放入当前绑定集的主要方式。有关如何MATCH使用 查找模式(包括量化路径模式量化关系最短路径)的更多信息,请参阅模式部分。

MATCHWHERE通常与向模式添加限制或谓词的部分相结合MATCH,使其更加具体。谓词是模式描述的一部分,不应被视为仅在匹配完成后应用的过滤器。 这意味着应始终将其与它所属的子句WHERE放在一起。MATCH

MATCH可以出现在查询的开头或之后,可能在之后WITH。如果它是第一个子句,则尚未绑定任何内容,Neo4j 将设计搜索以查找与子句和任何WHERE部分中指定的任何相关谓词匹配的结果。这可能涉及数据库扫描、具有特定标签的节点搜索或索引搜索以查找模式匹配的起点。此搜索找到的节点和关系可用作绑定模式元素,可用于路径的模式匹配。它们还可以用于任何后续MATCH子句中,其中 Neo4j 将使用已知元素,并从那里查找进一步的未知元素。

Cypher®是声明式的,因此查询本身通常不指定用于执行搜索的算法。Neo4j 将自动找出查找起始节点和匹配模式的最佳方法。WHERE部分中的谓词可以在模式匹配之前、模式匹配期间或找到匹配项之后进行评估。但是,在某些情况下,您可以影响查询编译器做出的决定。在创建、显示和删除索引中了解有关索引的更多信息,在Planner 提示和 USING 关键字中了解有关指定提示以强制 Neo4j 以特定方式解决查询的更多信息。

示例图

下图用于以下示例:

要重新创建图表,请针对空的 Neo4j 数据库运行以下查询:

CREATE
  (charlie:Person {name: 'Charlie Sheen'}),
  (martin:Person {name: 'Martin Sheen'}),
  (michael:Person {name: 'Michael Douglas'}),
  (oliver:Person {name: 'Oliver Stone'}),
  (rob:Person {name: 'Rob Reiner'}),
  (wallStreet:Movie {title: 'Wall Street'}),
  (charlie)-[:ACTED_IN {role: 'Bud Fox'}]->(wallStreet),
  (martin)-[:ACTED_IN {role: 'Carl Fox'}]->(wallStreet),
  (michael)-[:ACTED_IN {role: 'Gordon Gekko'}]->(wallStreet),
  (oliver)-[:DIRECTED]->(wallStreet),
  (thePresident:Movie {title: 'The American President'}),
  (martin)-[:ACTED_IN {role: 'A.J. MacInerney'}]->(thePresident),
  (michael)-[:ACTED_IN {role: 'President Andrew Shepherd'}]->(thePresident),
  (rob)-[:DIRECTED]->(thePresident),
  (martin)-[:FATHER_OF]->(charlie)

基本节点查找

获取所有节点

通过指定具有单个节点且没有标签的模式,将返回图中的所有节点。

询问
MATCH (n)
RETURN n

返回数据库中的所有节点。

表 1. 结果
n

Rows: 7

(:Person {"name":"Charlie Sheen"})

(:Person {"name":"Martin Sheen"})

(:Person {"name":"Michael Douglas"})

(:Person {"name":"Oliver Stone"})

(:Person {"name":"Rob Reiner"})

(:Movie {"title":"Wall Street"})

(:Movie {"title":"The American President"})

获取所有带标签的节点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北京橙溪 www.enwing.com

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值