首页 > 其他分享 >Neo4j-Cypher

Neo4j-Cypher

时间:2024-07-02 20:01:02浏览次数:21  
标签:TEST1 Cypher RETURN name 标签 mj Neo4j MATCH

1.1 Cypher

1.1.1 概念

Neo4j中不存在表的概念,只有两类:节点(Node)和关联(Relation),可以简单理解为图里面的点和边。
1.1.2 CREATE

新建节点-标签-关系

CREATE

(pll:TEST1 {name:'森林',mj:"5000亩"}),

(pl2:TEST1 {name:'沙漠',mj:"3000亩"}),

(lb1:TEST2 {name:'大树'}),

(lb2:TEST2 {name:'小树'}),

(lb3:TEST2 {name:'杂草'}),

(zll:TEST3 {name:'灌木'}),

(zl2:TEST3 {name:'乔木'}),

(lb1)-[:zb{bl:"60%",mj:"3000亩"}]->(pll),

(lb2)-[:zb{bl:"30%",mj:"2000亩"}]->(pll),

(lb3)-[:zb{bl:"10%",mj:"1000亩"}]->(pll),

(lb1)-[:zb{bl:"10%",mj:"100亩"}]->(pl2),

(lb2)-[:zb{bl:"20%",mj:"900亩"}]->(pl2),

(lb3)-[:zb{bl:"70%",mj:"2000亩"}]->(pl2),

(lb3)-[:zb{bl:"70%",mj:"2000亩"}]->(pl2),

     (zll)-[:zb{bl:"70%",mj:"1000亩"}]->(pl1)

新建节点

CREATE (pl3:TEST1 {name:'海洋',mj:"5000亩"})

新建标签

CREATE (pll:TEST3 {name:'灌木'})

新建关系属性

MATCH (x:TEST1),(y:TEST2)

WHERE x.name="海洋" and y.name="杂草"

CREATE (y)-[:zb{bl:"1%",mj:"88亩"}]->(x)

RETURN x,y;

1.1.3 MATCH

查询整体

MATCH (a:TEST1),(b:TEST2) RETURN a,b

查询森林的植物

MATCH (a:TEST1),(b:TEST2)

WHERE a.name = "森林"

RETURN a,b

查询沙漠中面积为100亩的植物

match (a:TEST1)<-[r]-(b:TEST2)

where a.name = "沙漠" and r.mj='100亩'

return a,b;

with -查询标签一与标签二有关还同时与标签三有关的信息

MATCH (x:TEST1)<-[r]-(y:TEST2 { name: "大树"})

WITH x

MATCH (x)<-[r]-(z:TEST3)

RETURN x,z

Union/union all-查询标签一与标签二有关和标签一与标签三有关的并集

MATCH (x:TEST1)<-[r]-(y:TEST2)

RETURN x.name

UNION ALL

MATCH (x:TEST1)<-[r]-(z:TEST2)

RETURN x.name

字符串匹配
字符串首尾可以使用STARTS WITH 和 ENDS WITH,去匹配定位字符串,字符串匹配还可以使用CONTAINS来匹配字符串中包含的自字符串。

MATCH (x:TEST1) WHERE x.name STARTS WITH '沙' RETURN x

MATCH (x:TEST1) WHERE x.name ENDS WITH '漠' RETURN x

MATCH (x:TEST1) WHERE x.name CONTAINS '漠' RETURN x

字符串排除匹配
在字符串匹配的时候可以使用NOT关键字来排除匹配到的结果,得到相反的结果

MATCH (x:TEST1) WHERE NOT x.name STARTS WITH '沙' RETURN x

字符串正则表达式,类似SQL中的like ‘%漠%’

MATCH (x:TEST1) WHERE x.name =~ '.*漠.*' RETURN x

匹配分页返回

MATCH (x:TEST1) RETURN x SKip 1 LIMIT 2

匹配去重返回

MATCH (x:TEST1) RETURN DISTINCT x

匹配分组返回值

MATCH (x:TEST1) RETURN ORDER BY x.name desc

别名返回

MATCH (x:TEST1) RETURN x.name  as xname

1.1.4 SET

修改节点属性值

MATCH (x:TEST1)

WHERE x.name = "沙漠"

SET x.name = "荒漠"

修改关系属性

match (x:TEST1)<-[r]-(y:TEST2)

where x.name = "沙漠" and y.name='大树'

set r.bl='80%'

return x,y;

1.1.5 DELETE

删除标签

MATCH (x:TEST3) DELETE x

删除节点-(与其他节点不存在关系)

MATCH (a:TEST1)

WHERE a.name = "森林"

DELETE a

删除节点-(与其他节点存在关系)

MATCH (x:TEST1)<-[r]-(y:TEST2)

WHERE x.name = "森林"

DELETE x,y

删除节点和关系

MATCH (x:movie)-[r]-(y:Person) RETURN r

MATCH (x:movie)-[r]-(y:Person) DELETE x,y,r

删除关系属性

match (x:TEST1)<-[r]-(y:TEST2)

where x.name = "沙漠" and y.name='大树'

delete r;

1.1.6 INDEX

创建索引:为” TEST1”标签的name属性创建索引

CREATE INDEX ON :TEST1(name)

删除索引:删除” TEST1”标签的name属性的索引

DROP INDEX ON : TEST1(name)

匹配条件中使用索引

MATCH (n: TEST1) WHERE n.name = '森林' RETURN n

创建节点属性唯一约束

创建一个唯一约束保证图数据库中同一个标签内的节点的属性值不重复。

注意:不可以为已经创建索引的属性创建唯一约束

CREATE CONSTRAINT ON (n:TEST1) ASSERT n.name IS UNIQUE

删除创建节点属性唯一约束

DROP CONSTRAINT ON (n:TEST1) ASSERT n.name IS UNIQUE

标签:TEST1,Cypher,RETURN,name,标签,mj,Neo4j,MATCH
From: https://blog.csdn.net/qq_45796594/article/details/140134986

相关文章

  • Neo4j-数据导入
    1.1.1导入对比常用的导入形式对比1.1.2csv文件导出(1).注意CSV文件需要使用utf8-无Bom格式(2).如果字段串中有逗号,需要给字符串的前后两端加上",(3).如果字符串中有双引号,需要把双引号替换成"“,再在字符串的前后两端加上”注意:导出csv不需要包含表头,增量和全量统一......
  • 基于知识图谱和neo4j图数据库的电影推荐系统(2024版)
    首先下载neo4j图数据库https://neo4j.com/deployment-center/知识图谱相关概念:知识图谱是一种结构化的知识存储形式,它以图形数据库为基础,用来表示实体(如人、地点、事件等)之间的复杂关系。这种技术结合了自然语言处理、信息提取、数据挖掘、图论等多种技术,目的是使机器能......
  • neo4j导入关系csv文件建立知识图谱
    1.启动neo4jstart出现neo4j不是内部或外部命令的问题解决方法:neo4j.bat不是内部或外部命令,也不是可运行的程序_neo4j.bat'不是内部或外部命令,也不是可运行的程序或批处理文件。-CSDN博客我按照他的方法添加了一个用户变量就解决了。 启动后,浏览器打开网址,输入自己的......
  • neo4j导入关系csv文件建立知识图谱
    1.启动neo4jstart出现neo4j不是内部或外部命令的问题解决方法:neo4j.bat不是内部或外部命令,也不是可运行的程序_neo4j.bat'不是内部或外部命令,也不是可运行的程序或批处理文件。-CSDN博客我按照他的方法添加了一个用户变量就解决了。 启动后,浏览器打开网址,输入自己的......
  • springboot3整合高版本spring data neo4j
    本博客适用于springboodataneo4j7.2.6版本,详情阅读官网https://docs.spring.io/spring-data/neo4j/reference/7.2/introduction-and-preface/index.html,中文网只更新到了6版本entity->nodeentity->relation@Node("Movie")//取代了老版本的nodeentity,他表示的就是labelp......
  • neo4j下载安装
    一、下载安装Neo4jJDK已下载好官网:Neo4jDeploymentCenter-GraphDatabase&Analytics然后选择自己需要的的版本进行下载 安装打开系统变量,新建系统变量 点击Path,新建,输入 %NEO4J_HOME%\bin 测试是否设置成功,打开命令窗口,输入 neo4j.batconsole 复制......
  • neo4j常用命令练习
    查询查询nodelabels下的节点match(n:`企业`)returnn 查询单个节点,这里返回的是一个节点,具有以下两种写法;在java中是optional,需要get一下match(n:`企业`{name:'金正大'})returnnmatch(n:`企业`)wheren.name='金正大'returnn查询单个节点的某一信息,这里返回的......
  • 使用neo4j时,无法load csv数据,或者出现Writing in read access mode not allowed, Att
    当在使用neo4j时需要导入csv数据批量创建节点时,显示无法导入CSV文件,看看是什么问题1.首先检查文件是否导入import文件打开import文件夹的方式如图,首先点击图数据库一栏右边三个点,移到Openfolder,点击import打开import文件夹后,检查是否存在要load的文件。2.当需要的CSV文......
  • 配置apoc——neo4j
    搞了半天终于出来了,真的很莫名其妙下载apoc的jar包再上一个博客,大家直接根据自己的neo4j的版本找对应的core包就行下载下来放到那个文件夹(plugins)修改配置文件:加上这个语句就行dbms.security.procedures.allowlist=apoc.coll.*,apoc.load.*,gds.*,apoc.math.maxInt,apoc.rel......
  • PoV:让以太坊再燃Cypherpunk之火
    一、前言:以太坊的静默时刻2023年末,以太坊创始人VitalikButerin发布新长文《MakeEthereumCypherpunkAgain》,引发了中文圈又一次讨论热潮。时值牛初,整个加密市场被比特铭文点燃。比特币生态如火如荼,铭文玩法也蔓延到了其他生态中。此外,DePin概念的发展也推动了Solana大涨。......