Neo4j图数据库的使用笔记

Neo4j图数据库的使用笔记

win系统安装Neo4j图数据库

安装准备:

  1. neo4j-3.4.0版本的zip包

  2. 找个目录解压安装zip包

  3. 启动neo4j

下载neo4j-3.4.0版本的zip包

可以去neo4j官网下载,也可以去微云数聚官网下载。

微云数聚是neo4j在国内的代理商。

请添加图片描述

解压到F:\neo4j\neo4j-chs-community-3.4.0-windows

请添加图片描述

控制台方式启动neo4j

进入bin目录后,在cmd执行 neo4j.bat  console 即可启动neo4j

启动成功后,会暴雷2个端口
7687是java 客户端连接端口
7474是neo4j自带的web管理端口

请添加图片描述

请添加图片描述

通过7474端口访问neo4j提供的web管理工具

第一次登录时,要输入账户密码,默认的账户是neo4j,密码也是neo4j

登录后,可以再修改密码。

请添加图片描述


neo4j数据库的概念和特点


neo4j在社交网络分析、推荐系统、知识图谱、网络安全分析等领域被广泛使用。它提供了丰富的功能和工具来管理和操作图数据,并且容易集成到Java和其他编程语言中

neo4j的一些概念特点如下

图数据库

neo4j使用图数据模型来存储数据。图由节点和关系组成,节点用于表示实体,关系用于表示实体之间的关联。

节点Node

节点是图中的实体,可以包含属性来描述实体的特征。
每个节点都有一个唯一的标识符ID,用于在图中识别和访问

关系Relationship

关系用于表示节点之间的连接或关联。
关系可以具有方向,并且可以包含属性。
关系连接两个节点,并且可以用标签来描述关系的类型

属性Property

节点和关系都可以包含属性,属性是键值对形式的的数据。
属性可以用于存储节点的特征信息或关系的属性

Cypher查询语言

Neo4j使用Cypher查询语言来进行查询和操作。
Cypher使用类似SQL的语法,但是针对图数据库进行了优化和扩展

ACID事务

Neo4j支持ACID(原子性、一致性、隔离箱、持久性)事务,
可以确保数据库的数据一致性和可靠性

高性能和可扩展性

neo4j以图的方式存储数据,这使得在遍历 和  查询图数据时非常高效。
同时Neo4j提供了水平和垂直的可扩展性,可以处理大规模的数据集和高并发访问。

neo4j清库方法

清空所有数据

需要在web控制台里执行以下cql语句

match(n) optional match(n)-[r]-() delete n,r

按 节点标签 删除数据

match(n:组织) optional match(n)-[r]-() delete n,r

请添加图片描述


neo4j索引的添加/查看/删除

neo4j也是可以设置索引的,索引可以加快neo4j的查询速度

neo4j添加索引

-- 对节点的uuid属性加索引
create index on :人员(uuid);
create index on :事件(uuid);
create index on :组织(uuid);

查看neo4j数据库全部索引

:schema

请添加图片描述

删除Node上已存在的索引

drop index on :人员(uuid);
drop index on :事件(uuid);

请添加图片描述


neo4j数据库的备份和恢复

win版本neo4j备份

 neo4j-admin.bat dump --database=graph.db --to=F:/bak/qbfx.dump

请添加图片描述

win版neo4j恢复 (恢复之前要先删除graph.db目录)

 neo4j-admin.bat load --from=F:/bak/qbfx.dump  --database=graph.db

请添加图片描述


linux版本neo4j备份

./bin/neo4j stop

./bin/neo4j-admin dump --database=graph.db --to=/data/backup/qbfx.dump --force

./bin/neo4j start

linux版本neo4j恢复数据

./bin/neo4j stop

./bin/neo4j-admin load --from=/data/backup/qbfx.dump --database=graph.db --force

./bin/neo4j start

常用的Cypher语句

新建一个Node

新建1个 Node,节点标签是 人员,节点属性是 {name:‘ryt’,age:21}

merge(:人员 {name:'ryt',age:21});            

新建一个关联

建立关联 至少要存在2个节点,这里先再建一个节点。

merge(:人员 {name:'myl',age:20});

然后对刚刚建的2个节点,新增关联关系。

找到名字为ryt和myl的2个人,

设置关联关系是 配偶,

关系属性是{name:‘夫妻’,ts:‘20230706’}

match(a),(b) where a.name='ryt' and b.name='myl' merge (a)-[r:配偶 {name:'夫妻',ts:'20230706'}]->(b);

查询所有的xx关系路径

这里查询所有的 配偶 关联关系路径,LIMIT 25意思是限制返回25条

MATCH p=()-[r:`配偶`]->() RETURN p LIMIT 25;

也可以进一步限定节点类型查询关系路径,如

match path=(n:人员)-[r:`共有常住地`]-(b:人员) where n.uuid='4da921fa477248aaa5593da51b3cc002' return path;

查询指定深度的关系路径

深度:2个节点之间间隔的层高

如a–>d–>b , 则a与b直接存在关系路径,且深度为2

如a—>e—>f---->b ,则a与b直接存在关系路径,且深度为3

查询某节点 到其他任意节点的深度为3的路径

match path=(n:人员)-[*..3]-(b) 
where n.uid='rr23r23r' and b.uid in ['fretewr','erfw','erf','wer'] 
return path;

查询a节点到b节点的深度为3的路径

match path=(a:人员)-[*..3]-(b:人员) 
where a.uid='rr23r23r' and b.uid='kertyt' 
return path;

查询当前节点到指定深度的相关节点有哪些

例:查询当前人员节点 指向 其他(人员或组织)节点 之间的深度为3的 节点有哪些

match(n:人员)-[*..3]-(m) 
where n.uid='rr23r23r' and (m:人员 or m:组织) 
return m;

修改某个Node节点的属性

例:修改节点的名称

match (n) where n.uid = 'rr23r23r' set n.name = 'lily';

判断是否存在某个Node节点

判断节点是否存在,需要用到count函数。

下面这个例子,返回的是一个布尔值FALSE或TRUE

match (n:人员 {uid:'rr23r23r',name:'lily'}) with count(n) > 0 as node_exist return node_exist;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/36618.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

满汉楼项目

满汉楼项目 1. 满汉楼介绍 满汉楼是一个综合餐饮管理系统,其主要分为: 人事登记:各部门人员信息登录管理:员工号、姓名、职位、密码菜谱价格:菜谱及价格报表统计:统计销售额成本及库房:名称注…

flutter聊天界面-聊天气泡长按弹出复制、删除按钮菜单

flutter聊天界面-聊天气泡长按弹出复制、删除按钮菜单 在之前实现了flutter聊天界面的富文本展示内容,这里记录一下当长按聊天气泡的时候弹出复制、删除等菜单功能 一、查看效果 当长按聊天气泡的时候弹出复制、删除等菜单,可新增更多按钮 二、代码实现…

2023/7/8总结

Tomcat 启动:双击bin目录下的startup.bat文件停止:双击bin目录下的shutdown.bat 文件访问 :http://localhost:8080(默认是8080,可以修改) git的使用 打开git bash git config --global user.name "名…

OpenCV读取一张深度图像并显示

#include <iostream> #include <opencv2/imgcodecs.hpp> #include <opencv2/opencv.hpp> #include

服务端研发提测模板

test环境分支自测通过 提测邮件标注test环境分支 【xxxxxx需求】服务端研发提测了&#xff0c;快去测试吧!

第十二章 elk

1、ELK可以帮助我们解决哪些问题 日志分布在多台不同的服务器上,业务一旦出现故障,需要一台台查看日志 单个日志文件巨大,无法使用常用的文本工具分析,检索困难; 2、架构设计分析 Filebeat和Logstash ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、i…

简述JMeter实现分布式并发及操作

为什么要分布式并发&#xff1f; JMeter性能实践过程中&#xff0c;一旦进行高并发操作时就会出现以下尴尬场景&#xff0c;JMeter客户端卡死、请求错误或是超时等&#xff0c;导致很难得出准确的性能测试结论。 目前知道的有两个方法可以解决JMeter支撑高并发&#xff1a; …

【ELK企业级日志分析系统】部署Filebeat+ELK详解

部署FilebeatELK详解 1. 部署Filebeat节点&#xff08;CentOS 7-4&#xff09;1.1 部署Apache服务1.2 部署Filebeat服务 2. filter插件2.1 grok正则捕获插件2.1.1 内置正则表达式调用2.1.2 自定义表达式调用2.1.3 设置正则表达式过滤条件 2.2 mutate数据修改插件2.2.1 Mutate过…

抖音seo矩阵系统源码|需求文档编译说明(二)

目录 1.抖音seo矩阵系统文档开发流程 2.各平台源码编译方式说明 3.底层技术功能表达式 1.抖音seo矩阵系统文档开发流程 ①产品原型 ②需求文档 ③产品流程图 ④部署方式说明 ⑤完整源码 ⑥源码编译方式说明 ⑦三方框架和SDK使用情况说明和代码位置 ⑧平台操作文档 ⑨程序架…

Ubuntu 20.04 L2TP VPN 自动重连脚本,cron定时任务设置

1、连接VNP脚本 reconnect_l2tp_vpn.sh #!/bin/sh ppp0_flagifconfig | grep ppp0 echo $ppp0_flag if [ -z "$ppp0_flag" ];thenecho "connet to vpn ..."# connet vpn# echo PASSWORD &#xff5c; sudo -S 这样可以不用手动输入密码!echo abc123| su…

IDEA集成Maven

目录 配置Maven环境 创建Maven项目 Maven坐标 导入Maven项目 Maven依赖管理&#xff08;核心&#xff09; 配置Maven环境 两种方法 每没创建一个maven项目都需要在项目中配置一遍在所有设置中进行全局设置&#xff0c;适用于所有的maven项目 步骤 在idea的初始界面中找到所…

【雕爷学编程】Arduino动手做(158)---VL53L0X激光测距模块

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

【Django学习】(十二)GenericAPIView_过滤_排序_分页

上篇文章初步接触了GenericAPIView&#xff0c;这次来更加深入的学习它&#xff0c;了解里面的一些使用和方法 get_object&#xff1a;源码中&#xff1a;处理查询集&#xff0c;并含有所需要得pk值,lookup_fieldget_queryset&#xff1a;源码中&#xff1a;先判断queryset是否…

可使用Linux 测试IP和端口是否能访问,查看返回状态码

一、 使用wget判断 wget是linux下的下载工具&#xff0c;需要先安装. 用法: wget ip:port wget ip:port连接存在的端口 二、使用telnet判断 telnet是windows标准服务&#xff0c;可以直接用&#xff1b;如果是linux机器&#xff0c;需要安装telnet. 用法: telnet ip port…

uniapp电子签名以及竖屏签名后内容旋转90度变为横屏图片

用该插件挺不错的 电子签名插件地址 如果你一个页面要用多个该插件&#xff0c;就改成不同的cavas-id&#xff0c;修改插件源码 效果图 竖屏写 旋转成横屏图片 插件内 在拿到签名临时地址后的页面 <!-- 旋转图片canvas --> <canvas canvas-id"camCacnvs&quo…

MySQL-SQL存储函数以及触发器详解

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xf…

15 Java 使用for进行死循环

括号里直接写两个分号即可。for(;;) package demo;public class Demo8 {public static void main(String[] args) {for (;;){System.out.println("你是最棒的&#xff01;");}} }

springboot高校党务系统

开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9

神经网络解决预测问题(以共享单车预测为例)

背景:大约从2015年起,共享单车席卷了大部分城市。共享单车在给人们带来便利的同时,也存在一些问题:单车的分布很不均匀。比如在早高峰的时候,一些地铁口往往聚集着大量的单车,而到了晚高峰却很难找到一辆单车了。那么如何解决共享单车分布不均匀的问题呢?目前,共享单车…

Docker镜像

是什么 是一种轻量级、可执行的独立软件包&#xff0c;它包含运行某个软件所需的所有内容&#xff0c;我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等)&#xff0c;这个打包好的运行环境就是image镜像文件。 只有通…