neo4j是高性能的NoSQL图数据库,是目前使用率最高的图数据库,它拥有活跃的社区,而且系统本身的查询效率高,但唯一的不足就是不支持准分布式,相反,OrientDB和JanusGraph支持分布式,通常来讲对于10亿节点一下规模的图谱来说Neo4j已经足够了。
一、Neo4j的安装
首先需要到点击打开链接下载neo4j,由于我的主机是ubutun故下载的是linux版本的neo4j
终端命令跳到目录neo4j所在目录下的/neo4j-community-3.0.7/bin
输入命令./neo4j console,运行neo4j
网页浏览http://localhost:7474/, 就会看到neo4j的后台界面
初次默认用户名和密码是 neo4j、neo4j
二、Neo4j的介绍
neo4j有自己的查询语言——Cypher,Cypher是对于图形模式的表达,总是先用MATCH去匹配我们要操作的数据。
Cypher由下列几个部分组成:
(1)nodes,通常用圆括号来包含节点标示符
例如:(p: Person)
如果想添加属性:(p: Person {name: "yinglish"})
(2)relationships,我们通常用——>表示关系,没有箭头的如——指不强方向关系
例如:(a)-[:KNOWS|:LIKE]->(b) a到b是“相识”的关系或者”喜欢“
(a)-[rel:KNOWS]->(b) 关系的变量名为rel,类型是 KNOWS
-[{since: 2016}]-> 添加了额外的属性
(3)patterns,模式由一个或多个路径组成,路径间用逗号分割,其是cypher中的关键部分,灵活书写模式能帮我们正 确获取、实现推测计算等等各种任务
三、Neo4j实现小demo
(1) 创建自己的"me"节点
CREATE (me:Myself {name:"我"}) RETURN me
(2)创建与自己关系的节点
MATCH (me:Myself {name:"我"}) CREATE (me)-[like:LIKE]->(neo:NeoDatabase {name:"Neo4j" }) RETURN me,like,neo
(3)批量创建与自己有关的朋友
MATCH (me:Myself {name:"我"}) FOREACH (name in ["张三","李四","王五","赵六","孙七"] | CREATE (me)-[:FRIEND]->(:Myself {name:name}))
(4) 查看me节点与friend
match (me {name:'我'})-[:FRIEND]->(mf) return me,mf
(5)新建朋友圈之外的二度关系
match (neo:NeoDatabase {name : 'Neo4j'})
match (me {name:'我'})-[:FRIEND]->(mf)
match (anna {name:'张三'})
create (ama:Myself {name:'周八'})
create (ama)-[:WORKED_WITH]->(neo)
create (anna)-[:FRIEND]->(ama)
return me,mf,neo,anna,ama
(6) 查询:我通过朋友圈中的谁来学习neo4j
match (me:Myself {name:"我"})
match (expert)-[:WORKED_WITH]->(neo:NeoDatabase {name:'Neo4j'})
match path = shortestPath((me)-[:FRIEND*..5]-(expert))
return path,me,expert,neo
注意,此过程单个步骤不可重复执行,否则最后输出的node及其多。
四、列举几个neo4j删除命令:
删除节点之前需先将关系删除
# 删除节点之前先要删除关系
match (me {name:'我'})-[r:FRIEND]-(mf)
detach delete r
match (Amanda {name:'周八'})-[r:WORKED_WITH]->(neo {name:'NeoDatabase'})
detach delete r