neo4j常用命令练习

查询

查询node labels下的节点

match (n:`企业`) return n

 查询单个节点,这里返回的是一个节点,具有以下两种写法;在java中是optional,需要get一下

match (n:`企业`{name:'金正大'}) return n
match (n:`企业`) where n.name='金正大' return n

查询单个节点的某一信息,这里返回的是一个table

match (n:`企业`{name:'金正大'}) return n.code

通过一个三元组节点(关系relation)查询另外两个节点

match (n:`企业`{name:'惠伦晶体'}),(m:`董事与公司关系`),(s:`董事`) 
where n.index=m.END_ID and m.START_ID=s.ID
return n.name,m.relation,s.name

通过关系类型relation查询三元组

MATCH p=()-[r:`董事与公司关系`]->() 
RETURN p LIMIT 25

升降序查询、限制、联合

MATCH (n:`企业`{name:'金正大'})
RETURN p LIMIT 25
order by id(n) desc

null查询:在一系列node里,虽然他们都属于董事,但是有人有se,有人没有se,如果我们想通过se的存在来区分查询,就需要用到null和not null

MATCH (n:`董事`) 
where n.se is null
return id(n),n.name

in查询

MATCH (n:`董事`) 
where n.name in ['黄忠民','王庆']
return n

索引创建与删除

create index on :`企业` (name)
drop index on :`企业` (name)

约束unique:创建唯一,drop同上

create constraint on (n:`高管`) 
assert n.name is unique

去重distinct

MATCH (n:`董事`) 
where n.name = '王庆' 
return distinct(n)

创建

创建节点

create (n:`企业` {name:'金正小'}) return n

创建节点之间的关系

match (n:`高管`{name:'刘尔奎'}),(m:`企业`{name:'金正大'}) 
create (n)-[r:董事会成员]->(m)
return n.name,r.TYPE,m.name

通过一个关系节点动态的创建节点之间的关系 // 如果企业不带name的话就是全匹配

match (n:`企业`{name:'惠伦晶体'}),(m:`董事与公司关系`),(s:`董事`) 
where n.index=m.END_ID and m.START_ID=s.ID
create (n)-[:`董事与公司关系`{relation:m.relation}]->(s)
return n.name,m.relation,s.name

删除

删除节点(前提是节点不存在关系)

MATCH (n:`高管`) 
where n.name='肖健'
delete n

删除关系

match (n:`企业`)-[r:董事与公司关系]->(m:`董事`) 
where n.name='惠伦晶体' and m.name='肖健'
delete r

删除节点的属性:把节点从node中删除 | 把节点中的一个属性删除

MATCH (n:`高管`) where n.name='肖健' remove n:`高管` return n

MATCH (n:`高管`) where n.name='肖健' remove n.age return n

 

 

loadcsv:中文需要使用特殊标记,不然会报错
load csv from 'file:///executive_stock.csv' as line 
create (n:`董事与公司关系` {START_ID:line[0],END_ID:line[1],relation:line[2],TYPE:line[3]})

 

 总结:

match (n:'...'),(m:'...')

where n.name='xxx' AND m.name=n.name

create ()-[]->() / delete n / set n.name='xxx' / return n,m

posted @ 2024-06-03 22:38  天启A  阅读(70)  评论(0)    收藏  举报