文章目录
Neo4j简介
Neo4j是一个高性能的, NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。
Neo4j安装(MAC)
- 下载
下载Neo4j Community Edition,下载地址:http://neo4j.org/download。
由于是mac下载,直接下载dmg文件。
- 运行
安装Neo4j Community Edition并打开,配置运行数据存储路径,配置完毕后点击start启动。
3. Neo4j的远程可视化操作
打开 options ,找到 .neo4j.conf,取消以下代码的注释
dbms.connectors.default_listen_address=0.0.0.0
- 浏览器打开
如果配置了第三步的Neo4j的远程可视化操作,则访问http://0.0.0.0:7474/browser/,没有就直接访问 http://localhost:7474/browser/。
Neo4j使用
1. 基本的增删改查
- 插入节点
插入一个Person类别的节点,且这个节点有一个属性name,属性值为Andres。
CREATE (n:Person {
name : 'Andres'});
- 插入边
插入一条 a 到 b 的有向边,且边的类别为Follow。
MATCH (a:Person),(b:Person)
WHERE a.name = 'Node A' AND b.name = 'Node B'
CREATE (a)-[r:Follow]->(b);
- 更新节点
更新一个Person类别的节点,设置新的name。
MATCH (n:Person {
name: 'Andres' })
SET n.name = 'Taylor';
- 删除节点
Neo4j中如果一个节点有边相连,是不能单单删除这个节点的。
MATCH (n:Person {
name:'Taylor' })
DETACH DELETE n;
- 删除边
MATCH (a:Person)-[r:Follow]->(b:Person)
WHERE a.name = 'Node A' AND b.name = 'Node B'
DELETE r;
- 查询最短路径
MATCH (ms:Person {
name:'Node A' }),(cs:Person {
name:'Node B' }), p = shortestPath((ms)-[r:Follow]-(cs)) RETURN p;
- 查询两个节点之间的关系
MATCH (a:Person {
name:'Node A' })-[r]->(b:Person {
name:'Node B' })
RETURN type(r);
- 查询一个节点的所有Follower
MATCH (:Person {
name:'Taylor' })-[r:Follow]->(Person)
RETURN Person.name;
详细查询
请查看The Neo4j Cypher Manual v4.4
项目经验
1.将关系模型映射到图数据库:
当从关系模型导出图模型时,您应该记住以下准则:
行是一个节点,表名是一个标签名,联接或外键是一种关系。
注意:Neo4j不存储空值。CSV文件中的Null或空字段可以跳过,或替换为加载CSV中的默认值。
创建节点并使边带权重
学习案例
例1:
CREATE (a:Place {
id: 'A'}),
(b:Place {
id: 'B'}),
(c:Place {
id: 'C'}),
(d:Place {
id: 'D'}),
(e:Place {
id: 'E'}),
(f:Place {
id: 'F'}),
(g:Place {
id: 'G'}),
(d)-[:LINK {
cost:4}]->(b),
(d)-[:LINK {
cost:6}]->