Neo4j笔记篇-Cypher增删改查-包含数据库的备份和迁移及问题记录

Cypher增删改查(包含数据库的备份和迁移及问题记录)

1.创建中心节点

CREATE (<node-name>:<label-name1>:<label-name2> ... ... :<label-namen>)
CREATE(n:schema{name:'标签体系',code:'CENTER'})

2.创建关系

MATCH (<node1-label-name>:<node1-name>),(<node2-label-name>:<node2-name>)
CREATE
(<node1-label-name>)-[<relationship-label-name>:<relationship-name>]->(<node2-label-name>)
RETURN <relationship-label-name>
MATCH (n:schema{name: '标签体系'}),(m:schema{name:'生态文明载体'})
CREATE (n)-[r:包含]->(m)

Merge关键字(有则返回,无则创建)
Create关键字(不管有没有都创建)
3.同时创建节点和关系

CREATE  
(<node1-label-name>:<node1-name>{<define-properties-list>})-
[<relationship-label-name>:<relationship-name>{<define-properties-list>}]->(<node1-label-name>:<node1-name>{<define-properties-list>})
  1. 从入库的实体中拿出某个属性,作为这个实体和其他实体关系的一个属性。
match (n:`标签名`)-[r]-(m:`标签名`) set r.属性名 = n.属性名

5.给一类标签的实体添加一个属性(便于检索)

MATCH (n:HHKD) SET n.name=n.RVNAME

6.为已存在的节点创建新标签

MATCH (e:标签名) set e:新的标签名 return e

1.删除节点

MATCH (r)
WHERE id(r) = 492
DELETE r

2.同时删除指定关系和节点

MATCH (p1:Person)-[r:LOVES]-(p2:Person)
DELETE p1,p2,r

3.删除所有关系

match ()-[r]-() delete r

4.删除某一类关系

MATCH p=()-[r:`实例`]->() delete r

5.删除节点的某一属性

Match(n:标签名称) remove n.属性名称

6.删除某一类标签(bingo)

#It would have 4 labels: Movie, Cinema, Film, and Picture.To remove the Picture label from all movies
MATCH(m:Movie)
REMOVE m:Picture
RETURN m

1.修改节点属性值

MATCH (r)
WHERE id(r) = 501
SET r.属性名称 = "属性值"

2.修改某属性值的类型为int(bingo)
关于其中方法: toInt()返回Longs,toFloat()返回Doubles。

MATCH (n:Type)  SET n.strProp = toInt(n.strProp)

1.查询示例

Match (n:PWK)-[rel:PWK_ZJHL]->(m:HL) where n.ZJHL="赣江" return m,rel,n
match data=(n:PWK{})-[rel]-(m:HL) where rel.ZJHLJL<500 return data
MATCH data=(n:ZRBHD)-[r:`保护`]->(m:HP) where n.JB="国家级" return data

2.检索某一类实体

MATCH (n:STQJXLYJS) return n

3.查询同时存在症状」头痛」和」发热」的疾病节点

match (a)-[r]-(b) where b.name in ['头痛','发热'] return a limit 5

4.查询多跳关系

match data=(n: 标签名)-[*1..3]->(m: 标签名) return data

内置函数

1.计算节点的出入度

#度:
size((n)--())
#出度:
size((n)-[]->())
#入度:
size(()-[]->(n))

2.统计某一类关系的数量

#方法一
MATCH ()-[r: `实例`]->() return COUNT(r);
#方法二
MATCH (:`标签名`)-[r: `实例`]->() return COUNT(r);

3.模糊查询

#①(正则查询)
Match data=(n:Person) where n.name=~’Jack.*return data 
#②(包含查询)
Match data=(n:Person) where n.name contains ‘J’ return data

正则表达式使用
1°不区分大小写(?i)、多行(?m)和 dotall (?s)

#示例   
MATCH (n) WHERE n.name =~ '(?i)Lon.*' RETURN n

2°在正则表达式中转义(类似.和 *等)

#示例  
 MATCH (n:Person) WHERE n.email =~ '.*\\.com'  RETURN n.name, n.age, n.email

4.最短路径查询

Match (n:Person{name:张三}),(m:Person{name:李四}),
data=shortestpath((n)-[*..10]-[m]) return data

5.所有路径查询

Match (n:Person{name:张三}),(m:Person{name:李四}),
data=allshortestpaths((n)-[*..10]-[m]) return data 

6.计算所有节点的出入度并添加为属性

MATCH (k) WITH k
size((k)--()) as degree
SET k.degree=degree;

7.统计某一标签下所有节点的某一属性之和

MATCH (n:Person)
RETURN sum(n.property)

8.计算某一标签下所有节点的某一属性的平均值

MATCH (n:Person)
RETURN avg(n.property)

9.计算某一类节点的数量

MATCH (n :Person)
RETURN  count(*)

10.创建约束(避免重复记录;强制执行数据完整性规则)

create constraint on (n:student) assert n.name is unique 
#删除约束的语法
drop constraint on (n:xiyou) assert n.name is unique

11.去重函数distinct(返回的是所有不同值。)

match (n: student) return distinct(n.name) 

12创建索引的语法(索引是创建在属性上的,目的是为了提高查询速度)

Create index on:<标签名称>(属性名称)
#删除索引的语法
drop index on:<标签名称>(属性名称)

13 not的用法(Cypher中没有not in,可以使用in再取反)

Match (n) where not(name in keys(n)) return n

14 Exists(判断是否包含某一属性)

Match (n) where exists (n.name) return type(n)

15.查询知识图谱的schema

Call db.schema()

16 查询多跳多关系

match path = (m:HL{name:"***"})-[:`**`|:`**`|:`***`*]-(n) return path limit 100

17其他函数
——字符串函数
Neo4j笔记篇-Cypher增删改查-包含数据库的备份和迁移及问题记录_第1张图片

——聚合相关函数
Neo4j笔记篇-Cypher增删改查-包含数据库的备份和迁移及问题记录_第2张图片

——关系函数
Neo4j笔记篇-Cypher增删改查-包含数据库的备份和迁移及问题记录_第3张图片

数据库的备份和迁移

对Neo4j数据进行备份、还原、迁移的操作时,需要先关闭Neo4j
1.数据库备份

#关闭neo4j
neo4j stop(一定要先执行neo4j install -service,才可以执行neo4j stop)
#备份
neo4j-admin dump --database=schema_test.db --to=D:\software\neo4j-community-3.5.28\backup_data\graph_backup1011.dump
#(备份文件的存放位置是D:\software\neo4j-community-3.5.28\backup_data,备份文件的名称是graph_backup1011.dump)

2.数据库恢复

#关闭neo4j
neo4j stop
#数据导入
neo4j-admin load --from=D:\software\neo4j-community-3.5.28\backup_data\graph_backup1009.dump --database=backup_test.db --force
#重启服务
neo4j start

出现问题记录:执行备份数据库命令后提示未能加载指定模块,
解决方式:将neo4j安装目录中bin下的配置文件neo4j-admin.ps1进行修改,将其ImportModel语句中的相对路径修改为绝对路径

————————————————————不定时更新————————————

你可能感兴趣的:(sql,neo4j)