目录
参考
图数据库、关系型数据库
Delete、Remove
案例
1、创建节点
2、创建结构关系
3、显示结果
3.1 一般显示
3.2、筛选出子孙绵延四代的树干
3.3、 筛选出存在三代子孙的树干
3.4、 筛选出某个节点为顶点的三代子孙树干
4、延申 -再加入数据
5、深度运算符[*1..3]+With
1、 史上最全面的Neo4j使用指南
2、 re
3、【Neo4j学习】应用案例
4、 Neo4j 图数据库在社交网络等领域的应用
图形数据库
以图形结构的形式存储数据的数据库。 它以节点,关系和属性的形式存储应用程序的数据;GDBMS以“图形”的形式存储数据
RDBMS(关系型数据库)
以表的“行,列”的形式存储数据
Tables 表 | Graphs 图表 |
Rows 行 | Nodes 节点 |
Columns and Data 列和数据 | Properties and its values属性及其值 |
CREATE (
节点标签:相当于表 (注意:这里表述的是节点标签)
节点: 相当于行
DELETE
删除节点和关系
REMOVE
删除节点或关系的标签:
MATCH (m:Movie)
REMOVE m:Picture
删除节点/关系的属性 :
MATCH (book { id:122 })
REMOVE book.price
RETURN book
类似:
ALTER TABLE BOOK REMOVE COLUMN PRICE;
SELECT * FROM BOOK WHERE ID = 122;
create(suxun:Person{name:"苏洵",age:80,sex:"男"})
create(sushi:Person{name:"苏轼",age:53,sex:"男"})
create(suzhe:Person{name:"苏辙",age:51,sex:"男"})
create(suxiaomei:Person{name:"苏小妹",age:45,sex:"女"})
create(susun:Person{name:"苏孙",age:29,sex:"男"})
create(suxiaosun:Person{name:"苏重孙",age:6,sex:"女"})
match(p1:Person),(p2:Person)
where p1.name="苏洵" and p2.name = "苏轼"
create (p1) -[parent:Parent{relation:"父亲"}]-> (p2);
match(p1:Person),(p2:Person)
where p1.name="苏洵" and p2.name = "苏辙"
create (p1) -[parent:Parent{relation:"父亲"}] -> (p2);
match(p1:Person),(p2:Person)
where p1.name="苏洵" and p2.name = "苏小妹"
create (p1) -[parent:Parent{relation:"父亲"}] -> (p2);
match(p1:Person),(p2:Person)
where p1.name="苏轼" and p2.name = "苏孙"
create (p1) -[parent:Parent{relation:"父亲"}] -> (p2);
match(p1:Person{name:"苏孙"}),(p2:Person{name:"苏重孙"})
create (p1) -[parent:Parent{relation:"父亲"}] -> (p2);
以上用了两种方式:
match(a)-[r:Parent]->(b) return a, r, b
match(a)-[r1:Parent]->(b)-[r2:Parent]->(c)-[r3:Parent]->(d) return a, b, c, d
可以发现,查出来的图形虽然是只有一条链路,但其实代表两条数据,各三级节点,如下
match(a{name:"苏洵"})-[r1:Parent]->(b)-[r2:Parent]->(c) return a, b, c
create(caocao:Person{name:"曹操",age:70,sex:"男"})
create(caozhi:Person{name:"曹植",age:43,sex:"男"})
create(caopi:Person{name:"曹丕",age:41,sex:"男"})
match(p1:Person),(p2:Person)
where p1.name="曹操" and p2.name = "曹植"
create (p1) -[parent:Parent{relation:"父亲"}] -> (p2)
match(p1:Person),(p2:Person)
where p1.name="曹操" and p2.name = "曹丕"
create (p1) -[parent:Parent{relation:"父亲"}] -> (p2)
如果只要查出曹操家族的图:
match(a)-[r:Parent]->(b) where a.name="曹操" return a, r, b
如果只要查出苏洵家族的图(一层):
match(a)-[r:Parent]->(b) where a.name="苏洵" return a, r, b
如果查出苏洵家族的图(所有):
用深度运算符解决:
match data=(a:Person{name:"苏洵"})-[*1..3]->(b:Person) return data
match(p1:Person),(p2:Person)
where p1.name="曹操" and p2.name = "曹植"
create (p1) -[fz:FZ{relation:"臣子"}] -> (p2)
查询所有关系 :
MATCH p=()-[r:FZ]->() RETURN p
查询一个关系:
暂时不知道怎么实现,知道的大神麻烦留言!
参考:关于neo4j查询多深度关系节点