一. 简介

neo4j是当今最流行的图数据库,基于 节点+关系 的架构,保存了图形数据的基本元素。同时,数据库也支持通过基础数据元素和独特的CQL查询语法,快速方便的检索、构建复杂的图表关系结果。

二. 基础知识

windows安装方法: 安装方法

CQL基本语法:基本语法

三. 实例

我想构建一个父子继承关系的图表结构,以苏洵苏轼家族为例,先建节点node如下:

create(suxun:Person_{name:"苏洵",age:80,sex:"男"})
create(sushi:Person_{name:"苏轼",age:53,sex:"男"})
create(suzhe:Person_{name:"苏辙",age:51,sex:"男"})
create(suxiaomei:Person_{name:"苏小妹",age:45,sex:"女"})
create(susun:Person_{name:"苏孙",age:29,sex:"男"})
create(suxiaosun:Person_{name:"苏重孙",age:6,sex:"女"})

其中有些节点人名为虚构,为了创建实例方便。

因为我数据库中先前已有Person标签名做了其他的测试,为避免重复和歧义,本例中标签名起为"Person_"。

对于节点之间的关系,为 :

苏洵-------|------苏轼 --------------苏孙 ---------------苏重孙

|------苏辙

|------苏小妹

因此创建结构的CQL为:

match(p1:Person_),(p2:Person_)
where p1.name="苏洵" and p2.name = "苏轼"
create (p1) -[parent:Parent{relation:"父亲"}]-> (p2);match(p1:Person_),(p2:Person_)
where p1.name="苏洵" and p2.name = "苏辙"
create (p1) -[parent:Parent{relation:"父亲"}] -> (p2);match(p1:Person_),(p2:Person_)
where p1.name="苏洵" and p2.name = "苏小妹"
create (p1) -[parent:Parent{relation:"父亲"}] -> (p2);match(p1:Person_),(p2:Person_)
where p1.name="苏轼" and p2.name = "苏孙"
create (p1) -[parent:Parent{relation:"父亲"}] -> (p2);match(p1:Person_{name:"苏孙"}),(p2:Person_{name:"苏重孙"})
create (p1) -[parent:Parent{relation:"父亲"}] -> (p2);

其中有两种方法:

  • 第一种用where进行节点筛选,例如 where p1.name="苏洵" and p2.name = "苏轼"
  • 第二种用属性进行节点筛选,例如match(p1:Person_{name:"苏孙"}),(p2:Person_{name:"苏重孙"})

两种方法都可以达到效果

最终结果为:

match(a)-[r:Parent]->(b) return a, r, b

使用match进行筛选,并且拼装成树状结构:

1. 筛选出子孙绵延四代的树干

match(a)-[r1:Parent]->(b)-[r2:Parent]->(c)-[r3:Parent]->(d) return a,  b, c, d

2. 筛选出存在三代子孙的树干

match(a)-[r1:Parent]->(b)-[r2:Parent]->(c) return a,  b, c

可以发现,查出来的图形虽然是只有一条链路,但其实代表两条数据,各三级节点,如下

那如果要查询某个节点开始的三级结构呢?

3. 筛选出某个节点为顶点的三代子孙树干

match(a{name:"苏洵"})-[r1:Parent]->(b)-[r2:Parent]->(c) return a,  b, c

这样就只筛选得到的是以“苏洵”为顶点的三级结构,依次是“苏洵”-->“苏轼”-->“苏孙”

可看到只有一条数据

neo4j的搭建和实例使用相关推荐

  1. 用Python中的py2neo库操作neo4j,搭建简单关联图谱—基于家有儿女中的人物关系

         我第一次建立关联图谱用的是R语言,通过写代码帮公安挖掘团伙犯罪,并用图形展示团伙之间的关联关系.如有需要请关注 "阿黎逸阳的代码" 公众号的后续文章,会手把手教大家用R搭 ...

  2. springmvc环境搭建及实例

    一. 软件环境 eclipse-jee-mars-R-win32-x86_64 jdk1.7.0_79 apache-tomcat-7.0.52 spring-framework-3.2.0.RELE ...

  3. 【DG】在Linux平台上搭建单实例的dataguard--duplicate

    [DG]在Linux平台上搭建单实例的dataguard--duplicate 一 : 实验环境介绍 *** 鉴于生产环境均采用 64 位系统和数据库软件,本实验也将采用这个标准 *** 采用vmwa ...

  4. 服务端Skynet(五)——如何搭建一个实例

    服务端Skynet(五)--如何搭建一个实例 文章目录 服务端Skynet(五)--如何搭建一个实例 1.配置文件 2.服务消息分发与回应(call/send) 3.通信(server/client) ...

  5. Neo4j REST API使用实例---ttlsa教程系列之neo4j(二)

    为什么80%的码农都做不了架构师?>>>    ttlsa教程系列之neo4j---(二)Neo4j REST API使用实例 一. 简介 通过REST API方式与Neo4j进行交 ...

  6. 【SSH网上商城】struts搭建及实例

    [简单介绍]         Struts是最早的java开源框架之一,它是MVC设计模式的一个优秀实现. Struts定义了通用的Controller(控制器),通过配置文件(通常是 Struts ...

  7. 04. Redis 环境搭建-单实例

    单节点的Redis 在生产环境并不多见, 但是对于日常的学习和本地开发测试, 还是经常用到的.比如说在日常工作中, 想测试某个API的用法, 那么在本地快速起一个Redis 单实例还是非常有必要的. ...

  8. 从定标准到搭流程,看UWA性能保障体系搭建的实例分享

    本次分享选自UWA DAY 2022 "UWA性能保障体系进一步拓展"议题,来自侑虎科技CTO张强的分享.从 "性能评分"."推荐值".&q ...

  9. SSM框架搭建简单实例

    简介 Spring+SpringMVC+MyBatis框架(SSM)是比较热门的中小型企业级项目开发的框架,对于新手来说也是比较容易学习入门的.虽说容易,但在框架搭建过程中仍然遇到了许多问题,因此用实 ...

最新文章

  1. 教你一招“恶意修改主页”的处理办法
  2. python评语生成_如何评价生成模型框架 ZhuSuan?
  3. 网站内链优化中有哪些常见的形式?
  4. python视频教程云盘-Python自动化测试视频教程【百度云盘下载】
  5. sqlserver 循环赋值变量
  6. 【C 语言】数据类型本质 ( 数据类型 | 数据类型本质 | 数组地址 | 数组首元素地址 )
  7. Facebook开源算法代码库,轻松复现前沿视频理解模型
  8. Atitit 热烈庆祝读经器项目圆满完成
  9. Windows7系统资源怎么看?
  10. 从72小时到1分钟,数据如何快速响应业务需求?
  11. php 实现贪吃蛇游戏,HTML5 贪吃蛇游戏实现思路及源代码_html5教程技巧
  12. php能做的事情,成就事业要做的十件事
  13. Redis学习笔记三:Redis的数据类型
  14. LuaForUnity10:框架配置与AssetBundle
  15. 8位单片机003兼容替换意法半导体STM8S003F3P6
  16. RELU激活函数作用
  17. c语言编程泰勒展开式计算,用C语言实现一个泰勒展开式的计算
  18. Windows命令:tracert
  19. 基于GIS和Python的百度地图街景爬取
  20. OOK电路在电调天线远端控制器(RCU)中的应用

热门文章

  1. Opensearch架构及引擎原理
  2. Linux文件系统--文件类型
  3. WuThreat身份安全云-TVD每日漏洞情报-2022-12-22
  4. Win11找不到gpedit.msc怎么办?Win11无法打开gpedit.msc解决教程
  5. 轻博客系统 doudangQb
  6. rot13初学者和python的实现
  7. android 6.0 logcat机制(一)java层写log,logd接受log
  8. Gabor滤波器为什么能实现频率域加窗
  9. WEB开发(7) Hibernate篇(上)
  10. 并发处理同一个订单问题