- neo4j简介
neo4j是一种图形数据库。Neo4j 使用数据结构中图(graph)的概念来进行建模。Neo4j 中两个最基本的概念是节点和边。节点表示实体,边则表示实体之间的关系。节点和边都可以有自己的属性。不同实体通过各种不同的关系关联起来,形成复杂的对象图。
- neo4j 安装
window下neo4j有两种安装办法:安装server或安装neo4j Desktop
安装server:
- 下载neo4j server
- 安装jdk8
- 配置neo4j的环境变量:NEO4J_HOME —>neo4j server的解压路径
- 使用bin目录下的neo4j.bat 安装和启动neo4j服务
- 浏览器中打开:http://localhost:7474
- 初始用户名/密码:neo4j/neo4j
安装neo4j Desktop:下载安装包,安装即可。
desktop的基本使用:
点击projects中的project(没有则新建)
点击Graph(没有则新建)中的start,然后点击Manage
点击Open Browser,便可以看见一个与neo4j server在浏览器打开的页面相同的界面。
3.Neo4j 基本概念
Neo4j是一个图形数据库,相较于其他数据库,它可以以图的方式来展示数据。如下图:
图中,圆圈代表节点,节点可以有不同标签(标签不同节点显示颜色不同),节点之间的箭头表示节点之间的关系。
节点:节点是图表的基本单位。 它包含具有键值对的属性
关系:关系是图形数据库的另一个主要构建块。 它连接两个节点
属性:属性是用于描述图节点和关系的键值对
标签:Label将一个公共名称与一组节点或关系相关联。 节点或关系可以包含一个或多个标签。
4.Neo4j 基本操作
创建节点:
Neo4j中创建节点或关系使用create命令。
创建节点的命令语法如下:
Create (node-name:label-name{ key:value,key2:value2})
Node-name: 节点的临时名称(这个名称不会存储到数据库中)
Label-name: 标签的名称(标签可以有多个以:隔开)
{…… }: 节点的属性的k-v值,多个以,隔开
查询:
查询使用match命令,但match命令不能单独使用,一般配合return一起使用。
Match与return语法如下:
Match(node-name:label-name)return node-name. property1-name
Node-name: 为查询出的数据赋予的临时名称
Label-name: 需要查询的数据的标签名称
property1-name: 查询数据的属性名(多个以,隔开)
上述查询出的结果是对应标签的下的所有的节点。想要查询特定的节点可以使用属性或where语句。
使用属性:
Match(node-name:label-name{key:value})return node-name. property1-name
使用where(where与sql语句中的where相同):
Match(node-name:label-name) where node-name.key = value return node-name. property1-name
创建关系:
因为关系是存在于两个节点之间,所以根据节点的状态(已创建或未创建)不同,创建的方法也不同。当节点已创建时,需要先将节点查询出来,再进行创建;若节点没有创建,则一起创建。
创建关系的语法如下:
有节点:
Match (node1:label-name),(node2:label-name)
Create (node1)—[relationship-name:relationship-label-name{keys:values}]—>(node2)
无节点:
Create (node1:lable-name{keys:values})—[relationship-name:relationship-label-name {keys:values}]—>(node2:lable-name{keys:values})
查询关系:
Match (lable-name)—[relationship-name:relationship-label-name {keys:values}]—>(lable-name)
删除节点或关系:
Match (node1:label-name) delete node1
删除节点或关系使用delete命令,删除前需要查询出需要删除的节点或关系
删除标签:
Match (node1:label-name) remove node1:label-name
删除属性:
Match (node1:label-name) remove node1.key
Set命令与limit命令
Set命名用于修改节点的属性:
Match (node1:label-name)set node1.key=value
Limit命令与mysql中的一样:
Match (node1:label-name)return node1 limit x