前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Neo4j常用查询语句

Neo4j常用查询语句

作者头像
水煮麥楽雞
发布2022-11-20 15:17:37
2.1K0
发布2022-11-20 15:17:37
举报
文章被收录于专栏:Find­My­FUNFind­My­FUN

Cypher使用match子句查询数据,是Cypher最基本的查询子句。在查询数据时,使用Match子句指定搜索的模式,这是从Neo4j数据库查询数据的最主要的方法。match子句之后通常会跟着where子句,向模式中添加过滤性的谓词,用于对数据进行过滤。在查询数据时,查询语句分为多个部分,with子句用于对上一个查询部分的结果进行处理,以输出到下一个查询部分。

一、节点查询

对节点进行查询,是查询graph的基本操作,节点具有标签和属性,Match查询不仅能够按照标签对节点进行查询,还能按照属性对节点进行查询。当没有指定节点的标签或属性时,默认是选择节点全部的标签和属性。

1. 查询所有节点

仅仅指定一个节点的模式,没有标签(Lable)和属性,表示查询所有的节点。

代码语言:javascript
复制
MATCH (n)
RETURN n

2. 查询带有特定标签的节点

当模式中指定标签时,表示只查询带有特定标签的节点,有多个标签的节点,只要含有指定的标签,就成功匹配,绑定该节点。

代码语言:javascript
复制
MATCH (movie:Movie)
RETURN movie.title

3. 查询相关的任意节点

指定一个节点,节点的name属性是'Oliver Stone',查询跟该节点相关的其他节点。

代码语言:javascript
复制
MATCH (movie:Movie)
RETURN movie.title

4. 查询相关的特定节点

指定一个节点,查询跟节点相关的节点,并指定相关节点的标签。

代码语言:javascript
复制
MATCH (:Person { name: 'Oliver Stone' })--(movie:Movie)
RETURN movie.title

二、基本关系的查询

对关系进行查询,关系的模式是由两个节点来决定的。

1. 指定关系的方向来查询节点

对于标签是Person,并且name属性是'Oliver Stone'的节点,该节点指向另外一个节点movie。

代码语言:javascript
复制
MATCH (:Person { name: 'Oliver Stone' })-->(movie)
RETURN movie.title

2. 查询关系的类型

在查询关系时,可以在match子句中指定关系变量,后续子句可以引用该变量,例如,使用type()函数查看关系的类型。

代码语言:javascript
复制
MATCH (:Person { name: 'Oliver Stone' })-[r]->(movie)
RETURN type(r)

3. 匹配关系类型

在匹配关系时,可以指定关系的类型。

代码语言:javascript
复制
MATCH (wallstreet:Movie { title: 'Wall Street' })<-[:ACTED_IN]-(actor)
RETURN actor.name

4. 匹配多种关系类型

在匹配关系时,可以指定多种关系的类型,只需要匹配其中任意一个关系类型就匹配成功。

代码语言:javascript
复制
MATCH (wallstreet { title: 'Wall Street' })<-[:ACTED_IN|:DIRECTED]-(person)
RETURN person.name

5. 匹配关系类型,并指定关系变量

代码语言:javascript
复制
MATCH (wallstreet { title: 'Wall Street' })<-[r:ACTED_IN]-(actor)
RETURN r.role

6. 匹配多个关系

代码语言:javascript
复制
MATCH (charlie { name: 'Charlie Sheen' })-[:ACTED_IN]->(movie)<-[:DIRECTED]-(director)
RETURN movie.title, director.name

三、匹配路径

路径是节点和关系交替组合构成的序列,图中必须满足路径指定的模式,才能返回路径中的元素。

1. 对变长路径的查询

代码语言:javascript
复制
MATCH (martin { name: 'Charlie Sheen' })-[:ACTED_IN*1..3]-(movie:Movie)
RETURN movie.title

2. 路径变量

代码语言:javascript
复制
MATCH p =(actor { name: 'Charlie Sheen' })-[:ACTED_IN*2]-(co_actor)
RETURN relationships(p),p

3. 根据路径的属性进行匹配

代码语言:javascript
复制
MATCH p =(charlie:Person)-[* { blocked:false }]-(martin:Person)
WHERE charlie.name = 'Charlie Sheen' AND martin.name = 'Martin Sheen'
RETURN p

版权属于:。。。源

本文链接:https://cloud.tencent.com/developer/article/2169640

转载时须注明出处及本声明。我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2py75w7904qok

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、节点查询
    • 1. 查询所有节点
      • 2. 查询带有特定标签的节点
        • 3. 查询相关的任意节点
          • 4. 查询相关的特定节点
          • 二、基本关系的查询
            • 1. 指定关系的方向来查询节点
              • 2. 查询关系的类型
                • 3. 匹配关系类型
                  • 4. 匹配多种关系类型
                    • 5. 匹配关系类型,并指定关系变量
                      • 6. 匹配多个关系
                      • 三、匹配路径
                        • 1. 对变长路径的查询
                          • 2. 路径变量
                            • 3. 根据路径的属性进行匹配
                            相关产品与服务
                            云开发 CloudBase
                            云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档