neo4j学习
家谱设计
CREATE (erzi:Person {id:'erzi'}), (baba:Person {id:'baba'}), (yeye:Person {id:'yeye',name:'zhangsan'}), (nainai:Person {id:'nainai'}), (mama:Person {id:'mama'}), (bozi:Person {id:'bozi'}), (erzi)-[:fathor]->(baba), (baba)-[:fathor]->(yeye), (baba)-[:mother]->(nainai), (erzi)-[:mother]->(mama), (erzi)-[:girlFrend]->(bozi)
Cypther语言
Cypther操作范例
create: create (mama:Person {id:'mama',name:'mama, age:30})
match: match(n:Person {id:'erzi'}) return n
match: match(n:Person) where n.id = 'erzi' return n.id
关系创建:
Match (n:Person {id:'erzi'}),(f:Person {id:'bozi'})
Merge (n)-[:fuqi]->(f)
merge的意思是创建或者查询,不存在就创建
Match (n:Person ),(f:Person)
where n.id='erzi' and f.id='bozi'
Merge (n)-[r:fuqi]->(f) delete r
Merge (n)-[:FUQI]->(f)
return n,f
箭头去掉就是匹配无向图
TO-BE-CONTINUED
更新属性
非结构化数据
任意语法都可以 return
delete 和 remove 主要区别:
delete操作用于删除节点和relation
remove操作用于删除标签label和属性
两个命令都应该和match命令一起使用
match (n:Person {id:"baba"}) remove n.age return n
match (s:Teacher )-[r:teach]->(d:Student) delete r, s, d 删除与该关系相关的老师和学生
match (n:Test) remove n:Test$ 删除label
排序
match (n:Person) return n order by n.id desc limit 25
match (n:Person) return n order by n.id desc skip 2 limit 25 跳过前2行
并集
union:把多段match的return结果上线性组合成一个结果***自动去掉重复行
union all:作用同union,但结果不去重
没有join
match (n:Person) where n.age >20 return n.id,n.age union all match (n:Person) where n.id='erzi' return n.id,n.age
match (n:Person) where n.age >20 return n.id,n.age union all match (n:Person) where n.id in ['erzi'] return n.id,n.age in面跟着中括号
ID含义
从0开始递增,全局唯一
relation具有方向性,必须指定方向。查询时可以不管
索引
不需要索引名称,只需要对索引字段操作就可以了
create index on :Person(id)
drop index on :Person(id)
通过where, in, =, >< >=, substring的都走索引
create constraint on (a:Person) assert a.id is unique
drop constraint on (a:Person) assert a.id is unique
常用函数
聚集函数 neo4j聚集函数无group by
shortestpath
match p=shortestpath((n:Person {id:'mama'})-[*..3]-(b:Person {id:'nainai'}) ) return p
指的是3度以内
关系函数
match p = ()-[r:father]->() return type(r),startnode(r),endnode(r)
正则表达式
项目:人民的名义
data准备
Merge (n:People {name:"蔡成功",image:"caichenggong.png"})
Merge (n1:People {name:"欧阳青",image:"ouyangqing.png"})
Merge (n2:People {name:"李达康",image:"lidakang.png"})
Merge (n3:People {name:"沙瑞金",image:"sharuijin.png"})
Merge (n4:People {name:"高玉良",image:"gaoyuliang.png"})
Merge (n5:People {name:"侯亮平",image:"houliangping.png"})
Merge (n6:People {name:"赵东来",image:"zhaodonglai.png"})
Merge (n7:People {name:"陆亦可",image:"luyike.png"})
Merge (n8:People {name:"周正",image:"zhouzheng.png"})
Merge (n110:People {name:"陈海",image:"chenhai.png"})
Merge (n111:People {name:"祁同伟",image:"qitongwei.png"})
Merge (n112:People {name:"陈岩石",image:"chenyanshi.png"})
Merge (n113:People {name:"高小琴",image:"gaoxiaoqin.png"})
Merge (n114:People {name:"欧阳青",image:"ouyangqing.png"})
Merge (n115:People {name:"丁义诊",image:"dingyizhen.png"})
Merge (n116:People {name:"王大路",image:"wangdalu.png"})
Merge (n117:People {name:"高玉良",image:"gaoyuliang.png"})
Merge (n118:People {name:"吴慧芬",image:"wuhuifen.png"})
Merge (n119:People {name:"钟小艾",image:"zhongxiaoai.png"})
Merge (n1110:People {name:"林华华",image:"linhuahua.png"})
Merge (n11a:People {name:"王馥真",image:"wangfuzhen.png"})
Merge (n11v:People {name:"季昌明",image:"jichangming.png"})
Merge (n11c:People {name:"陈阳",image:"chenyang.png"})
Merge (n11s:People {name:"梁璐",image:"lianglu.png"})
Merge (n11w:People {name:"高小琴",image:"gaoxiaoqin.png"})
Merge (n11d:People {name:"郑西坡",image:"zhenxipo.png"})
Merge (n11g:People {name:"高小凤",image:"gaoxiaofeng.png"})
Match (n:People {name:"蔡成功"}),(b:People {name:"欧阳青"}) Merge(n)-[:贿赂]->(b)
Match (n:People {name:"蔡成功"}),(b:People {name:"侯亮平"}) Merge(n)-[:发小]->(b)
Match (n:People {name:"欧阳青"}),(b:People {name:"丁义诊"}) Merge(n)-[:合作]->(b)
Match (n:People {name:"欧阳青"}),(b:People {name:"王大路"}) Merge(n)-[:朋友]->(b)
Match (n:People {name:"欧阳青"}),(b:People {name:"李达康"}) Merge(n)-[:夫妻]->(b)
Match (n:People {name:"李达康"}),(b:People {name:"王大路"}) Merge(n)-[:前同事]->(b)
Match (n:People {name:"李达康"}),(b:People {name:"丁义诊"}) Merge(n)-[:下属]->(b)
Match (n:People {name:"李达康"}),(b:People {name:"高玉良"}) Merge(n)-[:同事]->(b)
Match (n:People {name:"沙瑞金"}),(b:People {name:"高玉良"}) Merge(n)-[:下属]->(b)
Match (n:People {name:"沙瑞金"}),(b:People {name:"李达康"}) Merge(n)-[:下属]->(b)
Match (n:People {name:"沙瑞金"}),(b:People {name:"祁同伟"}) Merge(n)-[:下属]->(b)
Match (n:People {name:"高玉良"}),(b:People {name:"祁同伟"}) Merge(n)-[:学生]->(b)
Match (n:People {name:"高玉良"}),(b:People {name:"侯亮平"}) Merge(n)-[:学生]->(b)
Match (n:People {name:"高玉良"}),(b:People {name:"陈海"}) Merge(n)-[:学生]->(b)
Match (n:People {name:"高玉良"}),(b:People {name:"吴慧芬"}) Merge(n)-[:夫妻]->(b)
Match (n:People {name:"侯亮平"}),(b:People {name:"钟小艾"}) Merge(n)-[:夫妻]->(b)
Match (n:People {name:"侯亮平"}),(b:People {name:"陈海"}) Merge(n)-[:同学]->(b)
Match (n:People {name:"侯亮平"}),(b:People {name:"陆亦可"}) Merge(n)-[:下属]->(b)
Match (n:People {name:"侯亮平"}),(b:People {name:"赵东来"}) Merge(n)-[:办案]->(b)
Match (n:People {name:"赵东来"}),(b:People {name:"陆亦可"}) Merge(n)-[:喜欢]->(b)
Match (n:People {name:"陆亦可"}),(b:People {name:"陈海"}) Merge(n)-[:喜欢]->(b)
Match (n:People {name:"陆亦可"}),(b:People {name:"周正"}) Merge(n)-[:下属]->(b)
Match (n:People {name:"陆亦可"}),(b:People {name:"林华华"}) Merge(n)-[:下属]->(b)
Match (n:People {name:"周正"}),(b:People {name:"林华华"}) Merge(n)-[:情侣]->(b)
Match (n:People {name:"陈海"}),(b:People {name:"陈岩石"}) Merge(n)-[:父亲]->(b)
Match (n:People {name:"陈海"}),(b:People {name:"王馥真"}) Merge(n)-[:母亲]->(b)
Match (n:People {name:"陈海"}),(b:People {name:"季昌明"}) Merge(n)-[:上级]->(b)
Match (n:People {name:"陈海"}),(b:People {name:"陈阳"}) Merge(n)-[:姐姐]->(b)
Match (n:People {name:"祁同伟"}),(b:People {name:"陈阳"}) Merge(n)-[:初恋]->(b)
Match (n:People {name:"祁同伟"}),(b:People {name:"梁璐"}) Merge(n)-[:夫妻]->(b)
Match (n:People {name:"祁同伟"}),(b:People {name:"高小琴"}) Merge(n)-[:情妇]->(b)
Match (n:People {name:"陈岩石"}),(b:People {name:"郑西坡"}) Merge(n)-[:前下属]->(b)
Match (n:People {name:"高小琴"}),(b:People {name:"高小凤"}) Merge(n)-[:姐妹]->(b)
关系查询
match p = allshortestpaths((n:People {name:'蔡成功'})-[*..6]-(m:People {name:'陈海'})) return p
neo4j配置调优
调优:改一些参数
数据迁移:数据从环境1迁移到环境2,只要把data目录cp/mv过去,重启服务即可。
集群迁移:1. 如果不升级版本,则同以上数据迁移方式
2. 如果跨版本,跨度不大的话同上,否则需要看官方文档是否需要调整其他地方。
完结撒花~