周分享还是准时到来喽~
看看本期表哥准备了什么新鲜内容吧
Neo4j概述
Neo4j的是世界领先的开源图形数据库. 它完全由使用Java语言通过新技术的发展.
Neo4j的是 -
-
• 一个开源
-
• Schema的自由
-
• 没有SQL
-
• 图形数据库
图形数据库也被称为图形数据库管理系统或GDBMS.
CQL简介
CQL代表Cypher查询语言。像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言。
Neo4j CQL -
-
• 它是Neo4j图形数据库的查询语言。
-
• 它是一种声明性模式匹配语言
-
• 它遵循SQL语法。
-
• 它的语法是非常简单且人性化、可读的格式。
如Oracle SQL -
-
• Neo4j CQL 以命令来执行数据库操作。
-
• Neo4j CQL 支持多个子句像在哪里,顺序等,以非常简单的方式编写非常复杂的查询。
-
• Neo4j CQL 支持一些功能,如字符串,Aggregation.In 除了他们,它还支持一些关系功能。
Neo4j的CQL命令/条款
常用的Neo4j CQL命令/条款如下:
S.No. | CQL命令/条 | 用法 |
1. | CREATE 创建 | 要创建节点,关系和属性 |
2. | MATCH 匹配 | 要检索有关节点,关系和属性数据 |
3. | RETURN 返回 | 返回查询结果 |
4. | WHERE 哪里 | 为了提供条件来筛选检索数据 |
5. | DELETE 删除 | 要删除节点和关系 |
6. | REMOVE 去掉 | 删除节点和关系的特性 |
7. | ORDER BY 以...排序 | 要检索的数据进行排序 |
8. | SET 组 | 要添加或更新标签 |
Neo4j的CQL功能
常用的Neo4j CQL函数以下:
S.No. | 定制列表功能 | 用法 |
1. | string(字符串) | 它们被用来与字符串文字工作. |
2. | Aggregation(聚合) | 它们被用来对CQL查询结果执行一些聚合操作. |
3. | Relationship(关系) | 它们被用来得到这样的StartNode关系,终端节点等的详细说明 |
Neo4j的CQL数据类型
这些数据类型是类似于Java语言. 它们被用来定义一个节点或关系的特性
Neo4j的CQL支持以下数据类型:
S.No. | CQL数据类型 | 用法 |
1. | bool | 它是用来表示布尔文字:真的,假的. |
2. | byte | 它被用于表示8位整数. |
3. | short | 它被用来代表16位整数. |
4. | INT | 它被用来代表32位整数. |
5. | long | 它被用来代表64位整数. |
6. | float | 它是用来表示32位浮点数. |
7. | double | 它是用来表示64位浮点数. |
8. | char | 它是用来表示16位的字符. |
9. | string | 它是用来表示字符串. |
部分命令示例
create
create (a:`长度`{name : "mm"}),(b:`长度`{name : "cm"}),(c:`长度`{name : "dm"}),(d:`长度`{name : "m"})
match + *
match ()-[rel]-() return rel;
match (a:test {name: "lucy"}) -[rel]- (b:test {name: "alice"}) return a,rel,b
match (a:`长度`) where a.name is null delete a;
merge
使用 MERGE
语句时,它将根据指定的模式在图数据库中查找匹配的节点和关系,如果找到匹配项,则返回这些匹配项;如果没有找到匹配项,则创建新的节点和/或关系。
MERGE
语句具有以下语法结构:
MERGE (node:Label {propertyKey: value})
ON CREATE SET node.property = value
ON MATCH SET node.property = value
RETURN node
在上述语法中:
-
•
(node:Label {propertyKey: value})
定义了要匹配或创建的节点模式。node
是节点变量,Label
是节点的标签,propertyKey
是节点的属性键,value
是属性的值。你可以根据需要修改节点的标签和属性。 -
•
ON CREATE SET
子句用于在创建新节点时设置属性的值。 -
•
ON MATCH SET
子句用于在匹配到现有节点时设置属性的值。 -
•
RETURN
子句用于返回匹配或创建的节点。
MERGE
语句的效果是:
-
• 如果图数据库中存在与指定模式匹配的节点,则它会返回这些节点。
-
• 如果图数据库中不存在与指定模式匹配的节点,则它会创建新的节点,并根据
ON CREATE SET
子句设置属性的值。 -
• 如果图数据库中存在与指定模式匹配的节点,则它会更新这些节点,并根据
ON MATCH SET
子句设置属性的值。
通过使用 MERGE
语句,可以根据需要创建或更新节点,以确保节点的唯一性和一致性。
detach + delete
DETACH
不是一个单独的命令,而是一个 DELETE
子句的一部分。它用于在删除节点时,同时删除与这些节点相关的关系。
当使用 DETACH DELETE
子句时,它将删除节点以及与这些节点相关的所有关系。这意味着节点将被从图数据库中完全删除,而不仅仅是从标签中移除。
如何使用 DETACH DELETE
子句删除带有特定标签的所有节点以及与这些节点相关的关系:
MATCH (n:YourLabel)
DETACH DELETE n
在上述示例中,我们使用 MATCH
子句找到带有 YourLabel
标签的所有节点,然后使用 DETACH DELETE
子句删除这些节点以及与它们相关的所有关系。
执行 DETACH DELETE
操作是不可逆的,并且将永久删除节点和关系。在执行此操作之前,请务必备份你的数据,并确保你真正想要删除这些节点和关系。
neo4j-driver
当在Express中使用Neo4j驱动程序(neo4j-driver)时,你可以使用以下函数来连接到Neo4j数据库并执行查询操作:
-
1.
neo4j.driver(uri, auth, config)
: 用于创建与Neo4j数据库的连接。uri
是Neo4j数据库的URI,auth
是包含用户名和密码的身份验证对象,config
是一个可选的配置对象。示例用法:const neo4j = require('neo4j-driver');
const driver = neo4j.driver('bolt://localhost:7687', neo4j.auth.basic('username', 'password')); -
2.
driver.session(config)
: 用于打开一个新的会话(session)来执行查询操作。config
是一个可选的配置对象。示例用法:const session = driver.session();
-
3.
session.run(query, parameters)
: 用于执行Cypher查询。query
是Cypher查询语句,parameters
是查询参数。示例用法:const result = await session.run('MATCH (n) RETURN n LIMIT $limit', { limit: 10 });
-
4.
session.writeTransaction(callback)
: 用于在写事务中执行一系列操作。callback
是一个函数,该函数接受一个事务(transaction)对象作为参数,并在事务中执行操作。示例用法:await Neo4jSession.executeWrite(tx => {
const label = name;
const setLabelQuery = `CREATE (n {id: toInteger($id) }) SET n:${label} RETURN n`;
const setLabelParams = { id: conversiontype.type_id };
return tx.run(setLabelQuery, setLabelParams);
}); -
5.
result.records
: 查询结果中的记录数组。示例用法:result.records.forEach(record => {
console.log(record.get('n').properties);
});
以上是一些常用的Neo4j驱动程序函数。可以根据自己的需求进一步探索Neo4j驱动程序的其他功能和函数。
在使用Neo4j驱动程序时,需要适当地处理错误、释放资源,并遵循最佳实践来确保代码的安全和性能。
本期内容还是干货满满吧
掌握好基础知识才能更好的进行高阶学习捏~
加油喽!
原文始发于微信公众号(SKSEC):【表哥有话说 第109期】Neo4j基础
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论