neo4j教程-Cypher操作

这篇具有很好参考价值的文章主要介绍了neo4j教程-Cypher操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Cypher基础操作

Cypher是图形存储数据库Neo4j的查询语言,Cypher是通过模式匹配Neo4j数据库中的节点和关系,从而对数据库Neo4j中的节点和关系进行一系列的相关操作。

下面,通过一张表来介绍一下常用的Neo4j操作命令及相关说明,具体如表所示。

操作命令 相关说明
CREATE 创建节点、关系
MATCH 查找所有符合给定模式的节点、关系以及属性数据
RETURN 返回查询结果
WHERE 过滤条件,筛选出符合条件的数据
DELETE 永久删除节点和关系
REMOVE 删除节点的属性

增-CREATE命令

语法

使用CREATE命令创建节点、关系,具体语法如下:

# 创建带有标签的节点
CREATE (<node-name>:<label-name>)
# 创建带有标签、属性的节点
CREATE (<node-name>:<label-name>{<property-name>:<property-value>})
# 创建带有标签的关系
CREATE (<node1-name>:<label1-name>)-[(<relationship-name>:
	<relationship-label-name>)] ->(<node2-name>:<label2-name>)

上述语法中,CREATE是创建节点、关系的命令;

  • <node-name>表示节点名称,Neo4j使用此名称将该节点的详细信息存储在Database.As中,用作Neo4j数据库管理(注:不能使用节点名称来访问节点的详细信息);
  • <label-name>表示标签名称,是内部节点名称的别名(注:可使用标签名称访问节点的详细信息);
  • <property-name>表示属性名;
  • < property-value >表示属性值;
  • <relationship-name>表示关系;
  • <relationship-label-name>表示关系的标签。

案例练习

我们演示创建一个节点p,其中标签为Person、属性分别为“name、age、hobby”、属性值分别为“张三、18、swimming”,具体如下:

$ create (p:Person{name:'张三',age:18,hobby:'swimming'})

执行上述命令后,Web UI界面的控制台返回“Added 1 label, created 1 node, set 3 properties, completed after 15 ms.”信息,说明我们新增一个标签、创建一个节点,并设置了三个属性。

neo4j教程-Cypher操作,neo4j,数据库

下面,我们演示创建标签为Likes的关系friend,其中起始节点为Jac、属性name为Jack,结束节点为Emm、属性name为Emma,具体如下:

$ create (Jac:Person{name:'Jack'})-[friend:Likes]->(Emma:Person{name:'Emma'})

执行上述命令后,Web UI界面的控制台返回“Added 2 labels, created 2 nodes, set 2 properties, created 1 relationship, completed after 3 ms.”信息,说明我们新增两个标签、创建两个节点、设置两个属性、创建一个关系(注意:标签Person是节点的标签;标签Likes是关系的标签)。

neo4j教程-Cypher操作,neo4j,数据库

查看图示数据

neo4j教程-Cypher操作,neo4j,数据库

neo4j教程-Cypher操作,neo4j,数据库

1.match命令

语法

使用MATCH命令查找所有符合给定模式的节点、关系以及属性数据,具体语法如下:

MATCH (<node-name>:<label-name>)

上述语法中,MATCH用于查找所有符合给定模式的节点、关系以及属性数据的命令;<node-name>表示节点名称;<label-name>表示标签名称。

案例练习

演示查找数据库中标签为Person节点p的详细信息,具体如下:

$ match (p:Person)

neo4j教程-Cypher操作,neo4j,数据库

从图中可看出是语法错误,若想要使用MATCH命令,则需要与RETURN命令或更新命令结合使用。

2.RETURN命令

语法

使用RETURN命令返回查询结果,具体语法如下:

RETURN (<node-name>:<property-name>)

上述语法中,RETURN是用于返回查询结果的命令;<node-name>表示节点名称;< property -name>表示属性名。

案例练习

下面,我们演示返回属性为age的节点p的所有信息,具体如下:

$ return p.age

执行上述命令后,查看Web UI界面控制台的返回结果,具体如图所示。

neo4j教程-Cypher操作,neo4j,数据库

从图中可看出是语法错误,若想要使用RETURN命令,则需要与METCH命令或CREATE命令结合使用。

查询案例练习(正确版)

题目1:我们演示查询数据库中节点p的详细信息,具体如下:

$ match (p:Person) return p.name,p.age,p.hobby

neo4j教程-Cypher操作,neo4j,数据库

若想要使用RETURN命令,则需要与METCH命令或CREATE命令结合使用。

题目2:我们演示查询数据库中所有节点的详细信息,具体如下:

$ match (n) return n

neo4j教程-Cypher操作,neo4j,数据库

如果我们要按照某种条件查询呢?–WHERE命令

3.WHERE命令

语法

使用WHERE命令查询符合条件的数据,具体语法如下:

WHERE <condition>

上述语法中,WHERE是用于查询符合条件的数据命令,该命令需要与MATCH命令和RETURN命令结合使用;<condition>表示查询的条件。

案例练习

演示查询符合条件“p.name=‘张三’”的节点详细信息,具体如下:

$ match (p:Person) where p.name='张三' return p

neo4j教程-Cypher操作,neo4j,数据库

和sql很像!

1.-DELETE命令

语法

使用DELETE命令永久的删除节点或关系,具体语法如下:

# 删除节点
DELETE <node-name-list>
# 删除节点及关联的关系
DELETE <node1-name>,<node2-name>,<relationship-name>

上述语法中,DELETE是用于永久删除节点或关系的命令,该命令需要与MATCH命令结合使用,删除满足某个条件的节点;<node-name-list>表示节点名称列表;<relationship-name>表示关系名称。

案例练习

题目1:我们演示删除属性name为张三的节点,具体如下:

$ match (p{name:'Bob'}) delete p

neo4j教程-Cypher操作,neo4j,数据库

执行“match (p:Person) return p”命令,然后查看Web UI界面控制台的返回结果,如图所示。

neo4j教程-Cypher操作,neo4j,数据库

若是想要清空数据库中的节点或者关系,则可以执行“match (n) detach delete n”命令,但是该命令要慎用。

题目2:我们演示删除属性name分别为Jack和Emma的节点以及相关联的关系,具体如下:

$ match (Jac{name:'Jack'})-[friend]->(Emm{name:'Emma'}) delete Jac,Emm,friend

neo4j教程-Cypher操作,neo4j,数据库

2.REMOVE命令

语法

使用REMOVE命令删除节点的属性,具体语法如下:

# 删除节点的属性
REMOVE <property-name-list>

上述语法中,REMOVE是用于删除节点的属性的命令,该命令需要与MATCH命令结合使用;<property-name-list>表示节点的属性名称列表。

案例练习

我们演示删除节点的属性hobby,由于上述小节中演示删除了数据库中的所有节点,导致数据库中无任何节点,因此,需要先执行创建节点的命令,然后再执行删除属性hobby的命令,具体如下:

$ create (p:Person{name:'Bob',age:22,hobby:'go dancing'})
$ match (p:Person) remove p.hobby

创建节点

neo4j教程-Cypher操作,neo4j,数据库

删除属性

neo4j教程-Cypher操作,neo4j,数据库

$match (n) detach delete n
#清空Neo4j数据库中的节点和关系数据

其他

先行工作

插入节点、关系

create (Jac:Person{name:'Jack',age:19})-[friend:Likes]->(Emma:Person{name:'Emma',age:17})-[girlfriend:Likes]->(Rose:Person{name:'Rose',age:17})

neo4j教程-Cypher操作,neo4j,数据库

列访问、排序和分页

查询节点姓名、年龄并按照年龄排序返回前十个

SQL语句

SELECT p.name, p.age
FROM Person as p
ORDER BY p.age DESC
LIMIT 10;

Neo4j语句

MATCH (p:Person)
RETURN p.name, p.age
ORDER BY p.age DESC
LIMIT 10;

neo4j教程-Cypher操作,neo4j,数据库

索引(Indexing)

如果要通过此节点标签和属性组合快速匹配,则可以在导入期间创建索引,这很有意义。

CREATE INDEX ON :Person(name);

过滤

Cypher中具有完整的集合支持,不仅包括IN运算符,还包括集合函数、谓词和转换。

查找名字在’Bob’,'Emma’中的节点

MATCH (p:Person)
WHERE p.name IN ['Bob','Emma']
RETURN p.name, p.age;

neo4j教程-Cypher操作,neo4j,数据库

按多个数字和文本谓词过滤

现在,让我们尝试找到一些名字以“ B”开头的大于17岁的节点。

sql语句

SELECT p.name, p.age
FROM Person AS p
WHERE p.name LIKE 'B%' AND p.age > 17;

LIKE操作者通过所取代STARTS WITH(也有CONTAINSENDS WITH)所有其中的三个索引支持。

MATCH (p:Person)
WHERE p.name STARTS WITH "B" AND p.age > 17
RETURN p.name, p.age;

neo4j教程-Cypher操作,neo4j,数据库

还可以使用正则表达式,例如p.name =~ "B."

想学习更多请参考:史上最全-Neo4j相关资源传送门 - 知乎 (zhihu.com)文章来源地址https://www.toymoban.com/news/detail-608456.html

到了这里,关于neo4j教程-Cypher操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 图数据库_Neo4j学习cypher语言_使用CQL_构建明星关系图谱_导入明星数据_导入明星关系数据_创建明星关系---Neo4j图数据库工作笔记0009

    首先找到明星数据   可以看到有一个sheet1,是,记录了所有的关系的数据   然后比如我们搜索一个撒贝宁,可以看到撒贝宁的数据   然后这个是构建的CQL语句   首先我们先去启动服务 neo4j console     然后我们再来看一下以前导入的,可以看到导入很简单, 就是上面有CQL 看一下节

    2024年02月12日
    浏览(34)
  • neo4j教程-Cypher操作

    Cypher是图形存储数据库Neo4j的查询语言,Cypher是通过模式匹配Neo4j数据库中的节点和关系,从而对数据库Neo4j中的节点和关系进行一系列的相关操作。 下面,通过一张表来介绍一下常用的Neo4j操作命令及相关说明,具体如表所示。 操作命令 相关说明 CREATE 创建节点、关系 MATC

    2024年02月15日
    浏览(39)
  • Neo4j图数据库基本操作

    Neo4j 命令行窗口 neo4j.bat console 导入rdf格式的文件 清空所有数据 这里要注意的是,因为不存在孤立的关系,所以若要删除一个带关系的节点,需要同时删除该节点所有的关系。 即,若要删除路径 (a)-[d]-(b)-[e]-(c) 中的 a,b 节点,则需要同时删除关系 d,e。 因此,若要清空数据

    2024年02月12日
    浏览(37)
  • Neo4j图数据库安装教程

    记录Neo4j图数据库安装过程中踩过的坑和问题解决办法,仅供参考。 Neo4j数据库底层是使用java编写,所有底层基于Java虚拟机运行,所以在安装neo4j之前要安装java环境; 下载jdk1.7版本,自行安装    **这里有坑,建议不要直接跟着做呦,不然你会后悔的** set  JAVA_HOME = D:Pro

    2024年02月11日
    浏览(24)
  • Python操作Neo4j数据库使用案例

      Neo4j是一个世界领先的开源的基于图的数据库。其语言操作简单直观,本文假设你已经安装好Neo4j数据库,并对知识图谱有一定的了解。Neo4j数据库的查询语言为CQL,其代表Cypher查询语言。 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言。你可以访问(https://www.

    2024年02月03日
    浏览(32)
  • 图数据库Neo4j(最详细教程)

    ​随着社交、电商、金融、零售、物联网等行业的快速发展,现实社会织起了了一张庞大而复杂的关系网,传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随数据量呈几何级数增长,急需一种支持海量复杂数据关系运算的数据库,图数据库应运而生。

    2024年01月23日
    浏览(31)
  • 图数据库(五):Neo4j中的更新操作

    学过Mysql的人都知道,对于数据库的操作大多数都是增删改查,同样对于Neo4j图数据库也一样,今天我们就学习一下Neo4j中的更新操作。 使用set来修改节点,属性的值,但是如果该属性没有就新增该属性 此时我们可以看到,在id为172的Role节点中没有age属性,我们使用set属性就

    2024年02月07日
    浏览(37)
  • 图数据库(六):Neo4j中的查询操作

    上一篇文章我们学习了Neo4j中的更新操作,今天我们学习一下Neo4j的查询。 说到查询我们就不得不提到Match 查询所有节点 条件查询 在条件查询的过程中我们经常会使用where来进行过滤,有时候我们还可以使用到With,With可以看成用于向后面的查询传递结果

    2024年02月09日
    浏览(50)
  • 图数据库(四):Neo4j中的删除操作

    Delete 在Neo4j中说到删除节点,我们第一时间想到的肯定是Delete。 的确我们也经常使用Delete来删除节点。 删除节点 如果节点,没有关联关系那可以直接使用delete删除 如果节点存在关联关系,那么我们使用delete删除就会报错 此时如果一定要删除,那么我们可以使用deta

    2024年02月13日
    浏览(38)
  • 图数据库Neo4j实战(全网最详细教程)

    1.1 什么是图数据库(graph database) 随着社交、电商、金融、零售、物联网等行业的快速发展,现实社会织起了了一张庞大而复杂的关系网,传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随数据量呈几何级数增长,急需一种支持海量复杂数据关系运算的

    2023年04月09日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包