【表哥有话说 第109期】Neo4j基础

admin 2024年3月20日01:31:31评论4 views字数 3603阅读12分0秒阅读模式

周分享还是准时到来喽~

看看本期表哥准备了什么新鲜内容吧

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. 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. 2. driver.session(config): 用于打开一个新的会话(session)来执行查询操作。config 是一个可选的配置对象。示例用法:const session = driver.session();

  3. 3. session.run(query, parameters): 用于执行Cypher查询。query 是Cypher查询语句,parameters 是查询参数。示例用法:const result = await session.run('MATCH (n) RETURN n LIMIT $limit', { limit10 });

  4. 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. 5. result.records: 查询结果中的记录数组。示例用法:result.records.forEach(record => {
      console.log(record.get('n').properties);
    });

以上是一些常用的Neo4j驱动程序函数。可以根据自己的需求进一步探索Neo4j驱动程序的其他功能和函数。

在使用Neo4j驱动程序时,需要适当地处理错误、释放资源,并遵循最佳实践来确保代码的安全和性能。

本期内容还是干货满满吧

掌握好基础知识才能更好的进行高阶学习捏~

加油喽!

原文始发于微信公众号(SKSEC):【表哥有话说 第109期】Neo4j基础

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月20日01:31:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【表哥有话说 第109期】Neo4j基础http://cn-sec.com/archives/2580018.html

发表评论

匿名网友 填写信息