Neo4j 学习
0.Neo4j安装
为了方便快速学习,采用docker 方式安装
下载镜像
docker pull neo4j
创建容器
docker run -itd -p 7474:7474 -p 7687:7687 -v /opt/data:/data --name neo4j neo4j:latest
这里没有没配置env
参数 可在env
参数中配置初始登录密码,这里采用默认用户名和密码
然后即可在浏览器中访问http://localhost:7474
安装完成~~
1.根目录
- 描述
返回连接基本信息和版本号 - 请求方式
GET
- 请求地址
http://localhost:7474
- 返回数据
{
"bolt_routing": "neo4j://localhost:7687",
"transaction": "http://localhost:7474/db/{databaseName}/tx",
"bolt_direct": "bolt://localhost:7687",
"neo4j_version": "4.0.4",
"neo4j_edition": "community"
}
2.API CQL
-
描述
通过提交cql语句,进行对应的CUID -
请求方式
POST
-
请求地址
http://localhost:7474/db/neo4j/tx
是访问根目录返回json数据transaction
的值,数据默认名称是neo4j
-
认证
Basic Auth
认证,安装后默认用户名和密码neo4j/neo4j
-
返送数据
{
"statements" : [ {
"statement" : "MATCH (n) where id(n)=$nodeId RETURN labels(n)",
"parameters" : {
"nodeId": 10
}
} ]
}
statement
字段是执行Neo4j CQL语句
parameters
是CQL语句中nodeId`,在参数值列表中有相应的值
3.常用查询Neo4j CQL语句
根据id 查询node lable
MATCH (n)where id(r)=22 RETURN lables(n)
创建单个节点(n为变量 Node 为节点标签)
CREATE (n:Node) RETURN n
创建带有属性的节点
CREATE (n:Node{name:"node_name",key1:"value1"}) RETURN n
通过id删除不在关系中的单个节点
MATCH (n) WHERE id(n) = 10 DELETE n
通过条件删除不在关系中的单个节点
MATCH (n:Node{name:"node_name"}) WHERE id(n) = 10 DELETE n
或
MATCH (n:Node) WHERE id(n) = 10 AND n.name = "node_name" DELETE n
创建两个节点并给节点创建关系(Person 为节点标签,Friends 为关系标签)
CREATE(n_John:Person{name:"John",age:25})-[f:Friends{date:2000}]->(n_Lily:Person{name:"Lily",age:23}) RETURN n_John,r,n_Lily
给已存在的两个节点创建关系
MATCH (n1:Node1),(n2:Node2) CREATE (n1)-[r:RelationShip]->(n2) RETURN n1,r,n2
根据id 查询relationship label
MATCH ()-[r]->() where id(r)=22 RETURN TYPE(r)
查询某个节点的n层关系(多层关系*n..m n<m)
MATCH p=(n:Person{name:"John"})-[ * n..n]-() RETURN p
查询满足条件的多个节点
MATCH (n1:Node1),(n2:Node2) RETURN n1,n2
删除处于关系中的节点,首先删除关系然后在删除节点(删除时关系放在前面节点房子啊后面如r,n,m)
MATCH (n:Person{name:"John"}),(m:Person{name:"Lily"})
OPTIONAL MATCH (n)-[r]-(m)
DELETE r,n,m
使用WITH查询指定的三级关系
MATCH(p:Person)-[r1]->(c:Company) WITH p,r1,c MATCH(c)-[r2]->(s:Soft) RETURN p,r1,c,r2,s
通过关系获取节点 STARTNODE(relationship-label)
和ENDNODE(relationship-label)
MATCH (n)-[r:Knows]->(m) RETURN STARTNODE(r),ENDNODE()
现有节点添加或者修改属性
MATCH (n) WHERE n.name="kitty" SET n.city="Beijing"