Neo4j 安装及快速入门

Neo4j

1、简介

Neo4j 是一个高性能的,NOSQL 图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的基于磁盘的具备完全的事务特性Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j 也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。

Neo4j 因其嵌入式高性能轻量级等优势,越来越受到关注。

应用场景:

  • 社交网络
  • 知识图谱
  • 恶意软件检测

Neo4j 的组成

  • 节点

    图形的基本单元,包含一组 键值对

  • 属性

    键值对

  • 关系(可以有属性)

    连接两个节点

  • 标签

    一个节点或关系 包含 一个或多个标签

  • 数据浏览器

    执行 CQL

    导出 JSON 或 CSV

2、下载与安装

下载

neo4j 官网:https://neo4j.com/download-center/

配置环境变量

# 创建系统环境变量
NEO4J_HOME=D:\Environment\neo4j-community-3.5.30

# path 路径添加环境变量
path=%NEO4J_HOME%\bin

安装 neo4j 服务

# 安装和卸载服务
neo4j install-service
neo4j uninstall-service

# 启动服务,停止服务,重启服务和查询服务的状态
neo4j start
neo4j stop
neo4j restart
neo4j status

浏览器打开

http://localhost:7474

# 初始账号
neo4j 
# 初始密码
neo4j 
# 切换成多行命令
shift + Enter

3、文档

官方文档:https://neo4j.com/docs/getting-started/3.5/

​ http://neo4j.com.cn/public/cypher/neo4j_cql_introduction.html

W3Cschool-neo4j 教程:https://www.w3cschool.cn/neo4j/

4、Cypher

官方文档:https://neo4j.com/docs/cypher-manual/3.5/#cypher-manual

什么是 Cypher?

Cypher 是一种声明式图形查询语言,允许对图形进行富有表现力和高效的查询和更新。

CQL(Cypher Query Language)

语法简介

Cypher 从 SQL 借用了它的结构——查询是使用各种子句构建的。

查询语言由几个不同的子句组成。

以下是用于从图中读取的一些子句:

  • MATCH:要匹配的图形模式。这是从图中获取数据的最常用方法。
  • WHERE:本身不是一个子句,而是MATCHOPTIONAL MATCHWITH 的一部分。向模式添加约束,或过滤通过 WITH 的中间结果。
  • RETURN:返回什么。

CQL 命令

CQL 命令 描述 用法
CREATE 创建 创建节点,关系和属性
MATCH 匹配 检索有关节点,关系和属性数据
RETURN 返回 返回查询结果
WHERE 哪里 提供条件过滤检索数据
DELETE 删除 删除节点和关系
REMOVE 移除 删除节点和关系的属性
ORDER BY 以…排序 排序检索数据
SET 添加或更新标签

CQL 函数

定制列表功能 描述 用法
String 字符串 它们用于使用String字面量。
Aggregation 聚合 它们用于对CQL查询结果执行一些聚合操作。
Relationship 关系 他们用于获取关系的细节,如startnode,endnode等。

CQL 数据类型

CQL 数据类型 用法
boolean 用于表示布尔文字:true,false。
byte 用于表示8位整数。
short 用于表示16位整数。
int 用于表示32位整数。
long 用于表示64位整数。
float I用于表示32位浮点数。
double 用于表示64位浮点数。
char 用于表示16位字符。
String 用于表示字符串。

创建

# 创建
create (
    <node-name>:<label-name>
	{
        <Property1-name>:<Property1-Value>
     	 ........
      	<Propertyn-name>:<Propertyn-Value>
    }
)
                                     
create (dept:Dept { deptno:10,dname:"Accounting",location:"Paris" })  
create (emp:Employee { id: 123,name: "John",sal: 35000,deptno: 10 })    
语法元素 描述
<node-name> 节点名称
<label-name> 节点的标签名称
<Property-name>:<Property-Value> 键值对

MATCH RETURN

注意:match、return 不能单独使用!

match命令主要用途:

  • 获取有关数据库节点和属性数据
  • 获得有关节点,从数据库中的关系和属性数据
match (
   <node-name>:<label-name>
)

error:	match (dept:Dept)                        

return子句的主要用途:

  • 检索节点的一些特性
  • 检索节点的所有属性
  • 检索节点和关联关系的一些性质
  • 检索节点和关联关系的所有属性
return
   <node-name>.<property1-name>,........
   <node-name>.<propertyn-name>

error:	return dept.deptno

match + return语句:

# 查询节点属性
match (dept:Dept) 
return dept.deptno,dept.dname

请添加图片描述

# 查询节点
match (dept:Dept) 
return dept

请添加图片描述

关系

基于方向性:

  • 单向关系
  • 双向关系

基于节点:

  • 传出关系
  • 传入关系
MATCH (<node1-label-name>:<nodel-name>),(<node2-label-name>:<node2-name>)
CREATE  
	(<node1-label-name>)-[<relationship-label-name>:<relationship-name>{<define-properties-list>}]->(<node2-label-name>)
RETURN <relationship-label-name>
语法元素 描述
<node1-name> 节点1 名称
<node1-label-name> 节点1 标签名称
<node2-name> 节点2 名称
<node2-label-name> 节点2 标签名称
<relationship-name> 关系的名称
<relationship-label-name> 关系的标签名称
<define-properties-list> 关系的属性,一个或多个键值对
// 创建单向关系
match (e:Customer),(cc:CreditCard) 
create (e)- [r:do_shopping_with] -> (cc)
                                       
// 查询
MATCH p=()-[r:do_shopping_with]->(cc) 
RETURN p  

// 删除关系
MATCH (e:Customer)-[r:do_shopping_with]->(cc) 
delete r 

// 关系携带属性
match (cust:Customer),(cc:CreditCard)
create (cust)-[r:do_shopping_with{shopdate:"2021/11/10",price:55000}]->(cc)
return r

where 字句

match (emp:Employee)
where emp.name = "John"
return emp
MATCH (<node1-label-name>:<node1-name>),(<node2-label-name>:<node2-name>) 
WHERE <condition>
CREATE (<node1-label-name>)-[<relationship-label-name>:<relationship-name>
       {<relationship-properties>}]->(<node2-label-name>) 

删除节点、移除属性或标签

// 删除节点
delete <node-name-list>

// 删除节点间的关系
delete <node1-name>,<node2-name>,<relationship-name>

MATCH (cc: CreditCard)-[rel]-(c:Customer) 
DELETE cc,c,rel

// 删除全部节点
MATCH (n) detach delete n
                              
// 移除属性
MATCH (book { id:122 })
REMOVE book.price
RETURN book
    
// 移除标签
MATCH (m:Movie) 
REMOVE m:Picture             

原文地址:https://blog.csdn.net/weixin_51123079/article/details/124732222

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读752次。关系型数据库关系型数据库是一个结构化的数据库,创建在关系模型(二维表模型)基础上,一般面向于记录SQL语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行对关系型数据库中数据的检索和操作主流的关系数据库包括Oracle、Mysql、SQL Server、Microsoft Access、DB2等非关系型数据库NoSQL(nOSQL=Not Only SQL),意思是“不仅仅是SQL”,是非关系型数据库的总称。除了主流的关系型数据库外的数据库,都认为是非关系型主流的NoSQ.._redis是非关系型数据库吗
文章浏览阅读687次,点赞2次,收藏5次。商城系统中,抢购和秒杀是很常见的营销场景,在一定时间内有大量的用户访问商场下单,主要需要解决的问题有两个:1. 高并发对数据库产生的压力;2. 竞争状态下如何解决商品库存超卖;高并发对数据库产生的压力对于第一个问题,使用缓存来处理,避免直接操作数据库,例如使用 Redis。竞争状态下如何解决商品库存超卖对于第二个问题,需要重点说明。常规写法:查询出对应商品的库存,判断库存数量否大于 0,然后执行生成订单等操作,但是在判断库存是否大于 0 处,如果在高并发下就会有问题,导致库存_php库存结余并发
文章浏览阅读1.4k次。MongoTemplate开发spring-data-mongodb提供了MongoTemplate和MongoRepository两种方式访问MongoDB,MongoRepository的方式访问较为简单,MongoTemplate方式较为灵活,这两种方式在Java对于MongoDB的运用中相辅相成。_springboot插入指定的mongodb数据库
文章浏览阅读887次,点赞10次,收藏19次。1.背景介绍1. 背景介绍NoSQL数据库是一种非关系型数据库,它的特点是可以存储非结构化的数据,并且可以处理大量的数据。HBase是一个分布式、可扩展的列式存储系统,它是基于Google的Bigtable设计的。HBase是一个开源的NoSQL数据库,它的核心功能是提供高性能的随机读写访问。在本文中,我们将对比HBase与其他NoSQL数据库,例如Redis、MongoDB、Cass...
文章浏览阅读819次。MongoDB连接失败记录_edentialmechanisn-scram-sha-1
文章浏览阅读470次。mongodb抽取数据到ES,使用ELK内部插件无法获取数据,只能试试monstache抽取mongodb数据,但是monstache需要mongodb replica set 模式才能采集数据。############monstache-compose文件。#replicas set 启动服务。# 默认备份节点不能读写,可以设置。# mydb指的是需要同步的数据库。#登录主mongodb初始化rs。#primary 创建用户。# ip地址注意要修改。# ip地址注意要修改。_monstache csdn
文章浏览阅读913次,点赞4次,收藏5次。storage:fork: trueadmin登录切换数据库注意: use 代表创建并使用,当库中没有数据时默认不显示这个库删除数据库查看表清单> show tables # 或者 > show collections表创建db.createCollection('集合名称', [options])table1字段类型描述capped布尔(可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。_mongodb5
文章浏览阅读862次。Centos7.9设置MongoDB开机自启(超全教程,一条龙)_mongodb centos开机启动脚本
文章浏览阅读1.3k次,点赞6次,收藏21次。NoSQL数据库使用场景以及架构介绍
文章浏览阅读856次,点赞21次,收藏20次。1.背景介绍1. 背景介绍NoSQL数据库是一种非关系型数据库,它的设计目标是为了解决传统关系型数据库(如MySQL、Oracle等)在处理大量不结构化数据方面的不足。NoSQL数据库可以处理大量数据,具有高性能、高可扩展性和高可用性。但是,与关系型数据库不同,NoSQL数据库没有固定的模式,数据结构也不一定是表格。在NoSQL数据库中,数据存储和查询都是基于键值对、列族、图形等不同的...
文章浏览阅读416次。NoSQL定义:非关系型、分布式、开放源码和具有横向扩展能力的下一代数据库。由c++编写的开源、高性能、无模式的基于分布式文件存储的文档型数据库特点:高性能、高可用性、高扩展性、丰富的查询支持、可替换已完场文档某个指定的数据字段应用场景:社交场景:使用mongodb存储用户信息游戏场景:用户信息,装备积分物流场景:订单信息,订单状态场景操作特点:数据量大;读写操作频繁;价值较低的数据,对事物性要求不高开源、c语言编写、默认端口号6379、key-value形式存在,存储非结构化数据。_nosql
文章浏览阅读1.5k次,点赞3次,收藏2次。Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: Failed to create socket. at redis.clients.jedis.DefaultJedisSocketFactory.createSocket(DefaultJedisSocketFactory.java:110) at redis.clients.jedis.Connection.connect(Conne_redis.clients.jedis.exceptions.jedisconnectionexception: failed to create so
文章浏览阅读6.5k次,点赞3次,收藏12次。readAnyDatabase(在所有数据库上都有读取数据的权限)、readWriteAnyDatabase(在所有数据库上都有读写数据的权限)、userAdminAnyDatabase(在所有数据库上都有管理user的权限)、dbAdminAnyDatabase(管理所有数据库的权限);:clusterAdmin(管理机器的最高权限)、clusterManager(管理和监控集群的权限)、clusterMonitor(监控集群的权限)、hostManager( 管理Server);_mongodb创建用户密码并授权
文章浏览阅读593次。Redis是一个基于内存的键值型NoSQL数据库,在实际生产中有着非常广泛的用处_搭建本地redis
文章浏览阅读919次。Key 的最佳实践[业务名]:[数据名]:[id]足够简短:不超过 44 字节不包含特殊字符Value 的最佳实践:合理的拆分数据,拒绝 BigKey选择合适数据结构Hash 结构的 entry 数量不要超过 1000(默认是 500,如果达到上限则底层会使用哈希表而不是 ZipList,内存占用较多)设置合理的超时时间批量处理的方案:原生的 M 操作Pipeline 批处理注意事项:批处理时不建议一次携带太多命令。Pipeline 的多个命令之间不具备原子性。_redis高级实战
文章浏览阅读1.2k次。MongoDB 递归查询_mongodb数据库 递归
文章浏览阅读1.2k次。通过实际代码例子介绍:如何通过MongoTemplate和MongoRepository操作数据库数据_springboot操作mongodb
文章浏览阅读687次,点赞7次,收藏2次。首先欢迎大家阅读此文档,本文档主要分为三个模块分别是:Redis的介绍及安装、RedisDesktopManager可视化工具的安装、主从(哨兵)模式的配置。_redis 主从配置工具
文章浏览阅读764次。天下武功,无坚不摧,唯快不破!我的名字叫 Redis,全称是 Remote Dictionary Server。有人说,组 CP,除了要了解她外,还要给机会让她了解你。那么,作为开发工程师的你,是否愿意认真阅读此心法抓住机会来了解我,运用到你的系统中提升性能。我遵守 BSD 协议,由意大利人 Salvatore Sanfilippo 使用 C 语言编写的一个基于内存实现的键值型非关系(NoSQL)..._redis 7.2 源码
文章浏览阅读2k次。MongoDB 的增删改查【1】_mongodb $inc