Neo4j安装入门一些优缺点

如果你是第一次接触Neo4j,并且之前也都没接触过类似的Graph Database的话,建议先浏览一下我之前的一篇博客:为什么选择图形数据库,为什么选择Neo4j?。毕竟应该在做一件事之前要想清除为什么要做是吧。

1. 安装

Neo4j官网,下载community版,点击安装即可。很简单没什么可说的。

2. 入门

既然是入门,那就从简单开始,一步一步熟悉Neo4j。

2.1 图形操作界面

运行Neo4j后,在浏览器中打开网页::7474, 即可进入Neo4j的图形操作界面,在里面可以直接操作据库,也可以查看据库的状态。

页面顶端可以直接写Cypher语句并运行。右侧则显示一些数据库的状态以及提供一部分操作,包括:

Database Information。数据库信息。节点类别,边的类别,属性(包括节点的属性和边的属性)。

Favorites。写好的基本数据库语句,包括创建节点,查询节点个数,边个数等。创建示例图。查看数据库的状态。

Documentation。各种官方文档。

Neo4j Browser Sync。清空本地数据库。与云端数据库同步。

Browser Settings。图形操作界面的设置。

2.2 Cypher基本语句

Cypher是Neo4j的数据库语言,入门的话起码得知道增删改查吧。

插入节点。插入一个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:'Andres' }) DETACH DELETE n;

删除边。

MATCH (a:Person)-[r:Follow]->(b:Person) WHERE a.name = 'Andres' AND b.name = 'Taylor' DELETE r;

接着就是查询语句了,作为图形数据库,肯定要来点与众不同的查询对吧。

最短路径。

MATCH (ms:Person { name:'Andres' }),(cs:Person { name:'Taylor' }), p = shortestPath((ms)-[r:Follow]-(cs)) RETURN p;

查询两个节点之间的关系。

MATCH (a:Person { name:'Andres' })-[r]->(b:Person { name:'Taylor' }) RETURN type(r);

查询一个节点的所有Follower。

MATCH (:Person { name:'Taylor' })-[r:Follow]->(Person) RETURN Person.name;

还有更多的操作可以参考官方用户手册:官方用户手册

2.3 创建一个Neo4j数据库

运行Neo4j之后,在软件窗口可以选择数据库创建位置,之后Neo4j就自动为我们创建好了数据库。

此处输入图片的描述

创建唯一性约束,同时具有索引效果,类似关系型数据库中的主键。注意,这只能在数据库中还未插入数据时设置。

CREATE CONSTRAINT ON (a:Person) ASSERT a.name IS UNIQUE;

创建索引。

CREATE INDEX ON :Person(name);

查看所有的节点数和边数

MATCH (n) RETURN count(n); MATCH ()-->() RETURN count(*);

还有更多的操作可以参考官方用户手册:官方用户手册

2.4 Neo4j驱动

Neo4j提供了数种语言的数据库驱动,比如在Java中,你可以这样插入一个节点:

Driver driver = GraphDatabase.driver( "bolt://localhost", AuthTokens.basic( "neo4j", "neo4j" ) ); Session session = driver.session(); session.run( "CREATE (a:Person {name:'Arthur'})" ); session.close(); driver.close();

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3dd3847759e0f8afce66559aa0975e01.html