【neo4j】简易使用说明
一、数据库简介
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。
二、NEO4j的基本要素
1、实体节点
实体节点有标签,其相当于关系型数据库中表名的概念,换句话说就是对实体的归类。例如:实体A,标签为person,则可知该实体的类别为person。当然,neo4j支持实体类型多标签,因此,实体A的标签可以是多个,比如既有person又有thing的标签等等。同时,neo4j支持实体中添加属性。其中,每个实体的属性都是该实体的特有属性,实体间的属性的名称与取值可相同可不同。定位一个实体节点需要知道代表其唯一性的内容,具体请看相关语句。
2、关系
关系一定是基于两个节点而产生,同时存在单方向。在关系上同样存在标签,标签是对关系的归类,同时和实体节点一样,关系的标签可以是单个也可以多个。另外,关系中也可以有属性,每个关系的属性可以一致也可不一致。定位一个关系则需要知道代表其唯一性的内容,具体请看相关语句。
三、相关语句
1、创建
a) 创建一个带属性的节点
Create (n:Person{name:"JackyMa"}) return n
- n 是变量,用来代指我们创建的新的节点,在以后的查询中,变量很有用。
- 在neo4j中标签区分大小写,person和Person是两个不用类别的标签
b) 在现有的两个节点上创建一个新关系
Match(n) where id(n)=5 return n;
Match(m) where id(m) =6 return m;
Create (n)-[r:Related]->(m) return *
- 如果不match,直接执行create语句则会新生成节点与关系
c) 在新的节点上创建一个新的关系
Create (n:Person{name:"PonnyMa"})-[r:Create]->(m:Company{name:"Tencent"}) return *
d) 在一个新的、一个旧的节点上创建一个新的关系
Match(n) where id(n)=1 return n;
Create (n:Person{name:"Pony"})-[r:related]->(n) return *
2、修改
a) 修改已经存在的节点的属性
MATCH (n:Person { name: "PonnyMa" })
SET n.name= "ponnyMa"
b) 修改已经存在的节点的标签
Match (n) where id(n)=3411 return n REMOVE n:Person SET n:PERSON
c) 修改已经存在的节点间的关系标签
MATCH (n)-[r]->(m) where id(n)=3411 and id(m)=3412 delete r
MATCH (n) where id(n)=3411 match (m) where id(m)=3412 CREATE (n)-[r1:FOLLOWS]->(m)
d) 修改静静存在节点间的关系的属性
MATCH (n)-[r]->(m) where id(n)=3411 and id(m)=3412 SET r.date='2020-1-1'
3、删除
a) 删除一个节点
Match (n) where id(n)=1545 return n
Delete n
b) 删除一个关系
MATCH (n)-[r]->(m) where id(n)=3411 and id(m)=3412 delete r
4、 查询
Match (n) where id(n)=1545 return n
Match(n:person) return * limit 25
Match(n:person) where n.name contains "黄"
四、开发实战中遇到的问题
1、在使用python操作py2neo数据库时,出现过The old parameter syntax `{param}` is no longer supported. Please use `$param` instead的问题
解决思路:检查python版本、neo4j版本以及py2neo版本的支持匹配度。