本次初探主要学习如何安装Neo4j
,以及Cypher
的基本语法。
1. 安装Neo4j
Desktop
版本Server
版本(Community
版)比较建议安装这个版本,因为
Desktop
版本的老是闪退,且要激活之类的。下载
Neo4j
数据库下载常用算法的插件
graph-algorithms
apoc-procedures
将下载下来的算法插件放入到
$NEO4J_HOME/plugins
文件夹下Service
版修改配置文件$NEO4J_HOME/conf/neo4j.conf
启动/停止 (把
server
所在的路径添加到系统的PATH
)
2. Cypher基本语法
Nodes基本语法
在Cypher里面通过一对小括号代表一个节点
- () 代表匹配任意一个节点
- (node1) 代表匹配任意一个节点,并给它起了一个别名
- (:Lable) 代表查询一个类型的数据
- (person:Lable) 代表查询一个类型的数据,并给它起了一个别名
- (person:Lable {name:”小王”}) 查询某个类型下,节点属性满足某个值的数据
- (person:Lable {name:”小王”,age:23}) 节点的属性可以同时存在多个,是一个AND的关系
Relationship基本语法
系用一对-组成,关系分有方向的进和出,如果是无方向就是进和出都查询
- —> 指向一个节点
- -[role]-> 给关系加个别名
- -[:acted_in]-> 访问某一类关系
- -[role:acted_in]-> 访问某一类关系,并加了别名
- -[role:acted_in {roles:[“neo”,”Hadoop“]}]->
创建/删除节点
创建/删除关系
创建/删除约束
同
SQL
一样,Neo4j
数据库支持对Node
或relationship
的属性的UNIQUE
约束创建/删除索引
更新一个节点/边
筛选过滤
结果集返回
聚合函数
Cypher
支持count
,sum
,avg
,min
,max
聚合的时候
null
会被跳过count
语法 支持count( distinct role )
排序和分页
Union
联合With
语句with
语句给Cypher
提供了强大的pipeline
能力,可以一个或者query
的输出,或者下一个query
的输入 和return
语句非常类似,唯一不同的是,with
的每一个结果,必须使用别名标识。使用
with
我们可以在查询结果里面在继续嵌套查询。有点类似
SQL
中的having
,这里是with
+where
两个一起来实现的。查询最短路径
加载数据
Cypher Neo4j Couldn’t load the external resource
加载存在本地
server
上的数据,会在路径前面自动加个前缀/path-to-neo4j/neo4j-community-3.4.5/import
,即Server
对应所在的路径下的import
如果需要导入其他地方的,可以使用
使用
neo4j-import
导入数据- 使用条件
- 需要先关闭
neo4j
- 无法再原有的数据库添加,只能重新生成一个数据库
- 导入文件格式为
csv
- 需要先关闭
- 参数
- —into:数据库名称
- —bad-tolerance:能容忍的错误数据条数(即超过指定条数程序直接挂掉),默认1000
- —multiline-fields:是否允许多行插入(即有些换行的数据也可读取)
- —nodes:插入节点
- —relationships:插入关系
- 更多参数可允许命令
bin/neo4j-import
运行完后,将生成的
graph.db
放入data/databases
,覆盖原有数据库,启动运行即可- 使用条件
3. References
- Neo4j的简单搭建与使用
- Neo4j Tutorial
- Neo4j的查询语法笔记
- 官方文档:Comprehensive-Guide-to-Graph-Algorithms-in-Neo4j-ebook