关于图数据库的一些介绍
https://www.cnblogs.com/mantoudev/p/10414495.html
摘录一下:
图数据很多,图数据库比普通的要更快
neo4j的教程在:https://www.w3cschool.cn/neo4j/
Neo4j安装
到https://neo4j.com/,点右上角的 DOWNLOAD NEO4J就行。之后填一个表(表单加载挺慢的,得等会),就能下载了。会给一个激活密钥。
我用的Mac,下载链接:https://neo4j.com/artifact.php?name=neo4j-desktop-offline-1.2.4.dmg
Activation Key:
eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyIgSG9sZGluZyBDby4sIEx0ZC4iOiIiLCJjYWxsYmFjayI6IiIsImVtYWlsIjoiaUBodWF3ZWkuY29tIiwiZm9ybWF0IjoianNvbiIsIm9yZyI6Ikh1YXdlaSBJbnZlc3RtZW50ICIsInB1YiI6Im5lbzRqLmNvbSIsInJlZyI6Ikh1YSBXZWkiLCJzdWIiOiJuZW80ai1kZXNrdG9wIiwiZXhwIjoxNjIwNTI4Nzg5LCJ2ZXIiOiIqIiwiaXNzIjoibmVvNGouY29tIiwibmJmIjoxNTg4OTkyNzg5LCJpYXQiOjE1ODg5OTI3ODksImp0aSI6InJHN2RxWmFJYiJ9.pN66t95DNK0rMfcu7D-XnET7gx6IrFgSZg1VmUBciXyTzgnpUzWtlW3MZCaerL0IWO5ZQfmEgX25pAU3Pmq6SlZvW462fZluxgEOw9wfrNhbjCVXSM70bv2tpKoIk9I8xySOaVMOsZ16SZRtlo0QAvaNizaZiMTSy-kdr2t2hzzV4bSgSJ--gBg-nwVBrcPJZfMcEii_zNrOvGkV3LcvRoU8aHRucCLosNxrhmc0Ug-SxnYGU7beJB6pgVAf57TSlU7Cv6rj0aDY_KcWCyCb4r-XvBu-ZVtzxDziYWjF-CWOBotnxEZWA89QM8J-c-DF82CPCUmuzWzj1t4KNDK-9g
直接把dmg文件打开,应用拖到Application里面就行了。之后打开就会自动安装配置,用上面的Activation Key就可以,或者新注册一下。
创建
主页选择创建数据库,之后选create local graph 创建好之后选择启动之后可以点击manage,让它启动后按下open browser打开浏览器进行管理
浏览器中管理在上面这个地方有写用户名是neo4j,网址和端口也有
使用
节点
CREATE (n:Student {name:'张三'}) RETURN n
CREATE (n:Teacher {name:'罗翔'}) RETURN n
MATCH (n:Teacher {name:'罗翔'}) DELETE n
接下来再新增一个罗老师:CREATE (n:Teacher {name:'罗翔'}) RETURN n
添加边
MATCH (a: Teacher {name:'罗翔'}), (b: Student {name:'张三'}) MERGE (a)-[:审判]->(b)
查询
查询所有节点
MATCH (n) RETURN n LIMIT 25
查询所有边的起始节点
MATCH (a)-->() RETURN a
忽略边的方向,查询所有关系的节点
MATCH (a)--() RETURN a LIMIT 25
MATCH (a)-[:审判]-() RETURN a LIMIT 25
MATCH (a)-[r]->(b) return a, b, r
注意:选择出来的结果不会做边的筛选
假如有两个关系,添加一个MATCH (a: Teacher {name:'罗翔'}), (b: Student {name:'张三'}) MERGE (a)-[:教导]->(b)
MATCH (a)-[r:审判]->(b) RETURN a, b, r
结果直接呈现两个关系
现在有俩关系了删除边
MATCH ()-[r: 教导]->() DELETE r
属性
MATCH (a:Student {name:'张三'}) SET a.test='test'
MATCH (a:Student {name:'张三'}) REMOVE a.test
Python
这里使用和前面的语言一样的操作,不过为了区分这里用的是中文的label
pip install py2neo
安装好就可以连接了,注意协议不是http,是bolt
from py2neo import Graph,Node,Relationship
graph = Graph('bolt://localhost:7687',username='neo4j',password='123456')
a = Node('学生', name='张三')
b = Node('教师', name='罗翔')
graph.create(a)
graph.create(b)
这时我们在数据库里面可以看到:
用Python创建后r = Relationship(b,'审判',a)
graph.create(r)
from py2neo import NodeMatcher
luo = NodeMatcher(graph).match('教师',name='罗翔') # 相当于graph.nodes.match('教师',name='罗翔')
print(len(luo))
# 不能用luo[0]
print(luo.first())
print(luo.first().__name__)
for i in luo:
print(i)
print(i['name'])
print(luo.graph.nodes)
for i in luo.graph.relationships:
print(i) # 这里会有bug,一些已经删除过的边会仍然留在里面,导致这里报错
graph.delete(luo.graph.relationships[0]) # 注意这里的0不是下标!是边的ID
# 搜索边
ans = graph.match(nodes=None, r_type='审判')
for i in ans:
print(i)
print(i.identity) # 这里是ID
网友评论