图数据库 操作相关笔记

I、数据库使用版本信息

neo4j 3.1.0 社区版本

neo4j 4.0.9  社区版本

neo4j 4.2.11 企业版本

II、Neo4j 4.2.11企业版本

主要用作性能测试:

参考:Database management - Neo4j Cypher Manual

 III、数据库操作

0、数据库browser 查询结果配置

显示所有配置:

:config
{
  "maxHistory": 30,
  "theme": "auto",
  "initCmd": ":play start",
  "playImplicitInitCommands": true,
  "initialNodeDisplay": 300,
  "maxNeighbours": 100,
  "showSampleScripts": true,
  "browserSyncDebugServer": null,
  "maxRows": 1000,
  "maxFieldItems": 500,
  "autoComplete": true, #关系自动扩展 
  "scrollToTop": true,
  "maxFrames": 15,
  "codeFontLigatures": true,
  "useBoltRouting": false,
  "editorLint": false,
  "enableMultiStatementMode": true,
  "connectionTimeout": 30000,
  "showPerformanceOverlay": false,
  "allowCrashReports": true,
  "allowUserStats": true,
  "showWheelZoomInfo": false
}

修改默认配置:参考浏览器设置 - Neo4j 浏览器

如:#关系自动扩展  关闭

:config autoComplete:false

1、查询数据库

show databases;

 

2、创建数据库

数据库名称不能为中文,且不能以数字开头,不能为纯数字或包含点,破折号等字符.

CREATE DATABASE d732716aeb831c469ea469

3、切换数据库

:use d732716aeb831c469ea469

4、删除数据库

drop DATABASE d732716aeb831c469ea469

5、数据库别名创建

CREATE ALIAS `northwind` FOR DATABASE `northwind-graph-2020`

6、数据库别名更改

ALTER ALIAS `northwind` SET DATABASE TARGET `northwind-graph-2021`

7、数据库别名删除

DROP ALIAS `northwind` IF EXISTS FOR DATABASE

IIII、数据操作

1 数据添加

merge (n:Country {name:'中国'})

节点数据写入:从csv文件写入
 

//写入户主节点
LOAD CSV WITH HEADERS FROM "file:///persons.csv" AS line
merge(:个人{name:line.name})

关系数据写入:从csv文件写入

//写入户主关系
LOAD CSV WITH HEADERS FROM "file:///pr.csv" AS line
MATCH (entity1:户主{name:line.from}),(entity2:户主{name:line.to})
merge(entity1)-[:户主关系{name:line.link,type:'户主关系'}]->(entity2)

2 数据修改

修改节点属性

//设置户主tag1个人或企业性质
MATCH (n:`户主`) 
WHERE EXISTS(n.name) and size(n.name) >3
set n.tag1 = '企业'

3 数据查询

//属性模糊查询:

参考:Parameters - Neo4j Cypher Manual

官网说明:

Cypher supports filtering using regular expressions. The regular expression syntax is inherited from the Java regular expressions. This includes support for flags that change how strings are matched, including case-insensitive (?i), multiline (?m) and dotall (?s). Flags are given at the beginning of the regular expression, for example MATCH (n) WHERE n.name =~ '(?i)Lon.*' RETURN n will return nodes with name 'London' or with name 'LonDoN'.

note:

(?i):查询不区分大小写

(?m):跨行查询:正则表达式中出现了^或者$, 默认只会匹配第一行. 参考正则表达式Pattern.DOTALL、(?s)、Pattern.MULTILINE、(?m)_小百菜的博客-CSDN博客_pattern.multiline

(?s):dotall,即Singleline(单行模式)(?s)。表示更改.的含义,使它与每一个字符匹配(包括换行 符\n),默认情况下, 正则表达式中点(.)不会匹配换行符, 设置了Pattern.DOTALL模式, 才会匹配所有字符包括换行符。

  参考:【译】ES2018 新特性: 正则表达式的 s (dotAll) 标志_lyuharvey的博客-CSDN博客

//查询name属性中包含【张】的节点
MATCH (n)
WHERE n.name =~ ".*张.*"
RETURN n.name

//查询name属性中包含【zhang|Zhang】

MATCH (n)
WHERE n.name =~ '(?i).*hang.*'
RETURN n.name

//【户主】节点关系数量统计并排序

MATCH p=(n)-[r:`银行账户`]->(m) 

return distinct n.name,count(r) as cnt order by cnt desc

//多节点多层户主关系查询 

match data=(p:户主)-[:`户主关系`*2..5]-(e)
with p,collect(distinct e.name) as famis
match (p:户主)-[:`户主关系`*1..5]-(f)
with p,famis,collect(distinct f.name) as famis1,(famis+p.name) as names
where size(famis1)>2 and size(names)>2
return p.name as major,names,famis1

 //关系查询

MATCH path=((entity1)-->()<--(co)-->()<--(entity2))
WHERE entity1.name = "韩十八"  and NOT (entity1)-->()<--(entity2)
RETURN path

IIIII、apoc使用

//节点标签分类统计

CALL db.labels() YIELD label

CALL apoc.cypher.run('MATCH (:`'+label+'`) RETURN count(*) as count',{}) YIELD value

RETURN label, value.count

//关系标签分类统计

//关系分类统计
call db.relationshipTypes() yield relationshipType as relatypes
call apoc.cypher.run('match ()-[:`'+relatypes+'`]->() return count(*) as count',{}) yield value
return relatypes,value.count

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值