Neo4j图数据库的安装与基本增删改查

简介: Neo4j图数据库的安装与基本增删改查

安装启动

下载对应平台文件(社区版 neo4j-community-3.5.1)

https://neo4j.com/

neo4j-community-3.5.2-unix:

https://neo4j.com/artifact.php?name=neo4j-community-3.5.2-unix.tar.gz

解压 进入目录

$ ./neo4j start  # 启动
$ ./neo4j stop  # 停止

界面:http://localhost:7474/

首次使用:用户名、密码默认为 neo4j

两种方法清空数据库:

1、Cypher 语句:

match (n) detach delete n

2、删出文件

1、停掉服务
2、删除 graph.db 目录
3、重启服务

重要概念

1、节点

2、关系

3、属性

增删改查

1、添加4个节点

create(student:Student{id:1, name: "李雷"});
create(student:Student{id:2, name: "韩梅梅"});
create(teacher:Teacher{id:1, name: "仓老师"});
create(school:School{id: 1, title: "山东蓝翔"});

小写student 可以理解为面向对象的实体

大写Student 可以理解为面向对象的类

20190122145143311.png

2、添加3个关系

match(s:Student{id:1}),(t:Teacher{id:1}) create (t)-[r:教授]->(s);
match(s:Student{id:2}),(t:Teacher{id:1}) create (t)-[r:教授]->(s);
match(s:School{id:1}),(t:Teacher{id:1}) create (t)-[r:就职于]->(s);

20190122145217309.png

3、更新节点 老师改名字了

match(t:Teacher) 
where t.id=1 
set t.name="小泽老师"

4、删除节点 李雷被开除了

match(s:Student{id: 1}) 
detach delete s;

5、删除关系 小泽老师去别的班级上课了

match (t:Teacher)-[r:教授]->(s:Student) 
where t.id=1 and s.id=2 
delete r

6、索引操作

查看所有索引 
:schema
创建索引
create index on:Student(name)
删除索引
drop index on:Student(name)
创建唯一索引
create constraint on (s:Teacher) assert s.name is unique
删除唯一索引
drop constraint on (s:Teacher) assert s.name is unique

修改关系名称

MATCH (p:Person)-[r:投资]->(c:Company)
CREATE (p)-[r2:Invest{name:"投资"}]->(c)
// copy properties, if necessary
SET r2 = r
WITH r
DELETE r

https://stackoverflow.com/questions/22670369/neo4j-cypher-how-to-change-the-type-of-a-relationship

事务操作

from py2neo import Graph, Node, Relationship
g = Graph()
tx = g.begin()
a = Node("Person", name="Alice")
tx.create(a)
b = Node("Person", name="Bob")
ab = Relationship(a, "KNOWS", b)
tx.create(ab)
tx.commit()

批量导入

movies2.csv.

movieId:ID;title;year:int;:LABEL
tt0133093;'The Matrix';1999;Movie
tt0234215;'The Matrix Reloaded';2003;Movie|Sequel
tt0242653;'The Matrix Revolutions';2003;Movie|Sequel

actors2.csv.

personId:ID;name;:LABEL
keanu;'Keanu Reeves';Actor
laurence;'Laurence Fishburne';Actor
carrieanne;'Carrie-Anne Moss';Actor

roles2.csv.

:START_ID;role;:END_ID;:TYPE
keanu;'Neo';tt0133093;ACTED_IN
keanu;'Neo';tt0234215;ACTED_IN
keanu;'Neo';tt0242653;ACTED_IN
laurence;'Morpheus';tt0133093;ACTED_IN
laurence;'Morpheus';tt0234215;ACTED_IN
laurence;'Morpheus';tt0242653;ACTED_IN
carrieanne;'Trinity';tt0133093;ACTED_IN
carrieanne;'Trinity';tt0234215;ACTED_IN
carrieanne;'Trinity';tt0242653;ACTED_IN
The call to neo4j-admin import would look like this:

导入指令

$ bin/neo4j-admin import 
--nodes import/movies2.csv 
--nodes import/actors2.csv
--relationships import/roles2.csv 
--delimiter ";"
--array-delimiter "|" 
--quote "'"

配置外网访问

conf\neo4j.conf

#dbms.connector.http.listen_address=:7474
dbms.connector.http.listen_address=0.0.0.0:7474
#dbms.connector.bolt.listen_address=:7687
dbms.connector.bolt.listen_address=0.0.0.0:7687

配置环境变量:

#neo4j
export NEO4J_HOME=<neo4j_path>
export PATH=$PATH:$NEO4J_HOME/bin

参考:

  1. Mac 搭建Neo4j环境
  2. neo4j 初步认识和使用
  3. Neo4j的简单搭建与使用
  4. Neo4j 简单入门
  5. neo4j----创建索引
  6. https://neo4j.com/docs/operations-manual/current/tutorial/import-tool/
  7. 配置Neo4j服务器允许远程访问
相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
设计模式 前端开发 Java
SpringMvc框架入门使用(详细教程)
SpringMvc框架入门使用(详细教程)
390 0
|
8月前
|
存储 安全 网络安全
阿里云国际站:阿里云服务器端口配置
悟空云@CloudWuKong阿里云是全球领先的云计算服务提供商,为用户提供弹性计算、数据库、存储、网络安全等一系列云计算服务。在使用阿里云服务器时,合理配置端口非常重要,可以提高服务器安全性和稳定性。
|
存储 关系型数据库 数据库
利用Python与SQLite构建轻量级数据库应用
在当今日益增长的数据处理需求下,数据库成为存储、检索和管理数据的关键技术。然而,对于小型项目或快速原型开发,大型数据库系统可能显得过于庞大和复杂。本文将介绍如何利用Python编程语言与SQLite轻量级数据库,快速搭建一个功能齐全、易于维护的数据库应用。我们将探讨SQLite数据库的特点、Python对SQLite的支持,并通过一个实际案例展示如何构建一个简单的数据库应用,为读者提供一种高效、灵活的解决方案。
|
数据采集 前端开发 测试技术
Selenium中定位元素的9种方法
在Selenium中,定位页面元素是自动化测试和网页爬虫的基础。常用的9种元素定位方法包括:ID、Name、Class Name、Tag Name、CSS Selector、XPath、Link Text、Partial Link Text,以及XPath和CSS选择器的组合使用。每种方法各有优劣,建议根据页面的具体情况和元素的属性选择最合适的方法,并使用显式等待确保元素可用。
1645 5
|
机器学习/深度学习 运维 监控
智能化运维:机器学习在故障预测和自动化修复中的应用
随着信息技术的迅猛发展,企业对运维工作的效率和准确性要求越来越高。传统的运维模式已难以应对日益复杂的系统环境和数据量。本文将探讨如何利用机器学习技术提升运维工作的智能化水平,实现故障的早期预测和自动化修复,从而减少系统停机时间,提高企业运营效率。通过分析机器学习在运维领域的应用实例,揭示其在实际工作中的有效性和潜力。
208 0
|
存储 NoSQL 大数据
【MongoDB 专栏】MongoDB 在大数据场景下的应用
【5月更文挑战第11天】MongoDB,适用于大数据时代,以其灵活数据模型、高可扩展性和快速性能在大数据场景中脱颖而出。它处理海量、多类型数据,支持高并发,并在数据分析、日志处理、内容管理和物联网应用中广泛应用。电商和互联网公司的案例展示了其在扩展性和业务适应性上的优势,但同时也面临数据一致性、资源管理、数据安全和性能优化的挑战。
1147 1
【MongoDB 专栏】MongoDB 在大数据场景下的应用
|
Ubuntu 关系型数据库 MySQL
expect自动交互脚本:简化你的自动化任务
`expect` 是Linux自动化神器,用于模拟键盘输入与交互式应用自动交互,常用于自动登录服务器、执行命令。安装 `expect`(CentOS: `yum -y install tcl expect`, Ubuntu: `apt-get -y install expect`) 后,编写脚本如SSH登录示例,自动发送密码和命令。通过结合shell命令,`expect` 可实现复杂任务,如获取IP、登录MySQL。支持多服务器管理,根据用户输入选择登录。学习 `expect` 提升自动化效率!
927 0
|
Java 定位技术 API
Docker: java.lang.NoClassDefFoundError: sun.awt.X11FontManager
Docker: java.lang.NoClassDefFoundError: sun.awt.X11FontManager
Docker: java.lang.NoClassDefFoundError: sun.awt.X11FontManager
|
Arthas NoSQL Java
一次访问Redis延时高问题排查与总结(2)
本文是一次访问Redis延时高问题排查与总结的续篇,主要讲述了当时没有发现的一些问题和解决方案。
47924 22