Neo4j版本适配 JDK jdk8=>v4版本以下;jdk11=> 4.x版本;jdk17=>5.x版本
CQL | SQL | |
---|---|---|
节点(Node) | 表(Table)*我觉得更像数据库中的一行数据* |
|
属性(Property) | 列(Column) |
|
标签(Label) | 表名(Table Name) |
|
关系(Relationship) | 外键(Foreign Key) |
|
在linux系统安装需要修改配置文件,默认HTTP端口7474,HTTPS端口7473,一下是需要修改端口时的代码片段
#With default configuration Neo4j only accepts local connections.
#To accept non-local connections, uncomment this line:
#可以远程通过ip访问neo4j数据库 dbms.default_listen_address=0.0.0.0
#HTTP Connector. There can be zero or one HTTP connectors. dbms.connector.http.enabled=true dbms.connector.http.listen_address=:7474
#HTTPS Connector. There can be zero or one HTTPS connectors. dbms.connector.https.enabled=false dbms.connector.https.listen_address=:7473
#设置neo4j可读可写 dbms.databases.default_to_read_only=false
下面记录一些CQL的基础语法,和SQL一样也有增删改查操作;
新增, CREATE
是创建操作
Person`是**标签**,代表节点的类型。花括号{}代表节点的**属性**,
属性类似Python的字典。这条语句的含义就是创建一个标签为Person的节点,
该节点具有一个name属性,属性值是XYD。 可以创建sex,age等其他字段(属性)
CREATE (n:Person {name:'XYD'}) RETURN n
创建关系`MERGE`, 方括号`[ ]`即为关系,`FRIENDS`为关系的类型。
注意这里的箭头`-->`是有方向的,表示是从a到b的关系。
MATCH (a:Person {name:'Li'}),
(b:Person {name:'Mi'})
MERGE (a)-[:FRIENDS]->(b)
关系也可以增加属性 , 在关系中,同样的使用花括号{}来增加关系的属性,也是类似Python的字典,这里给FRIENDS关系增加了since属性,属性值为2001,表示他们建立朋友关系的时间。这里可以将FRIENDS理解为中间关系表,可以添加其他中间关联信息
MATCH (a:Person {name:'Sh'}),
(b:Person {name:'Sa'})
MERGE (a)-[:FRIENDS {since:2001}]->(b)
查询,这里也叫匹配; MATCH
是匹配操作
- 查询所有节点,将返回所有节点及其属性。
MATCH (n) RETURN n;
- 查询指定类型的节点
MATCH (n:Label) RETURN n; --查询label表下的所有属性 --这里不同节点下的相同属性都会被查询出来,所以给节点属性取名需要谨慎 --在以下情况下可以取名相同属性名,一些具有共享属性的比如创建时间 --例如:用户节点和帖子节点都可能有"创建时间"(created_at)属性 --例如:论文节点和作者节点都可能有"姓名"(name)属性,用于记录论文作者名和作者的姓名。 MATCH (n) RETURN n.property; --查询会所有具有"property"属性的节点及其对应的属性信息。
- 查询关系
MATCH (n)-[r]->(m) RETURN r; --查询图数据库中的关系,可以使用关系操作符 -[]->,return的是r就是返回r这个关系的属性
- 查询指定类型的关系
MATCH (n)-[r:REL_TYPE]->(m) RETURN r; --返回类型为 REL_TYPE 的所有关系及其属性。
- 查询节点和关系
MATCH (n)-[r]->(m) RETURN n, r, m;
- 还可以使用where条件过滤
MATCH (n) WHERE n.property = 'value' RETURN n;
- 还可以使用聚合函数
MATCH (n) RETURN count(n);
修改,更新现有节点的属性,可以使用 SET
关键字
MATCH (n:Label)
WHERE n.property = 'old_value'
SET n.property = 'new_value';
--将具有属性 property 值为 'old_value' 的节点的属性值更新为 'new_value'。
删除,使用delete关键字
MATCH (p:Person {name: 'John'}) DELETE p;--删除person节点中,name属性为John的节点