一. 简介

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

二. 基础知识

windows安装方法: 安装方法

CQL基本语法:基本语法

三. 实例

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


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

其中有些节点人名为虚构,为了创建实例方便。  因为我数据库中先前已有Person标签名做了其他的测试,为避免重复和歧义,本例中标签名起为"Person_"。

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

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

|------苏辙

|------苏小妹

因此创建结构的CQL为:


  1. match(p1:Person_),(p2:Person_)
  2. where p1.name="苏洵" and p2.name = "苏轼"
  3. create (p1) -[parent:Parent{relation:"父亲"}]-> (p2);
  4. match(p1:Person_),(p2:Person_)
  5. where p1.name="苏洵" and p2.name = "苏辙"
  6. create (p1) -[parent:Parent{relation:"父亲"}] -> (p2);
  7. match(p1:Person_),(p2:Person_)
  8. where p1.name="苏洵" and p2.name = "苏小妹"
  9. create (p1) -[parent:Parent{relation:"父亲"}] -> (p2);
  10. match(p1:Person_),(p2:Person_)
  11. where p1.name="苏轼" and p2.name = "苏孙"
  12. create (p1) -[parent:Parent{relation:"父亲"}] -> (p2);
  13. match(p1:Person_{name:"苏孙"}),(p2:Person_{name:"苏重孙"})
  14. 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

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

可看到只有一条数据

原文地址:https://blog.csdn.net/u010086122/article/details/82390945

neo4j的搭建和实例使用的更多相关文章

  1. 基于Docker的TensorFlow机器学习框架搭建和实例源码解读

    概述:基于Docker的TensorFlow机器学习框架搭建和实例源码解读,TensorFlow作为最火热的机器学习框架之一,Docker是的容器,可以很好的结合起来,为机器学习或者科研人员提供便捷的 ...

  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. SpringMVC笔记——SSM框架搭建简单实例

    落叶枫桥 博客园 首页 新随笔 联系 订阅 管理 SpringMVC笔记——SSM框架搭建简单实例 简介 Spring+SpringMVC+MyBatis框架(SSM)是比较热门的中小型企业级项目开发 ...

  4. monkeyrunner之环境搭建及实例(三)

    Monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器. 一.Monkeyrunner简介 1.MOnkeyrunner相对Mo ...

  5. CENTOS6.6上搭建单实例ORACLE12C

    本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 自己在centos6.6上搭建的单实例oracle12c 由 ...

  6. TFS2018环境搭建一单实例安装(适用于小型团队)

    1.服务器配置 阿里云 单核CPU,2GB的RAM,SSD硬盘,安装TFS实例 TFS2018要求SQL Server 2016 (minimum SP1)以上.其要求有以下几点: (1).安装SQL ...

  7. Struts2环境搭建及实例解析

    与struts1框架的使用一样,struts2的环境搭建及使用同样分为以下几个步骤: 1.      引入jar包(这里以struts2.2.3为例),所需jar包有以下几个: a)        s ...

  8. Redis实战篇(一)搭建Redis实例

    今天是Redis实战系列的第一讲,先从如何搭建一个Redis实例开始. 下面介绍如何在Docker.Windows.Linux下安装. Docker下安装 1.查看可用的 Redis 版本 访问 Re ...

  9. mysql 在一个实例运行情况下再搭建一个实例

    配置mysql服务 详细步骤,请参考(http://study.lishiming.net/chapter17.html#mysql), 阿铭只把简单步骤写一下. 根据阿铭提供的地址,假如你已经搭建好 ...

随机推荐

  1. iOS开发系列-Lock

    概述 我们在使用多线程的时候多个线程可能会访问同一块资源,这样就很容易引发数据错乱和数据安全等问题,这时候就需要我们保证每次只有一个线程访问这一块资源,锁 应运而生. iOS中锁之前的性能的图标排行: ...

  2. Python学习笔记(四)——文件永久存储

    文件的永久存储 pickle模块的使用 pickle的实质就是将数据对象以二进制的形式存储 存储数据 pickle.dump(data,file) data表示想要存储的数据元素,file表示要将数据 ...

  3. bcolz

    raise Exception("this is an ex") bcolz总结: 0.需要用bcolz的columns需要为ndarray的列,不能直接拿list去赋值,因为我发 ...

  4. poj1363 Rails Central Europe 1997

    P.S.: 输出换行 三个方法 1.直接按照要求做 根据给的数,需要push,pop哪些数据,具有唯一性 数最多进栈一次,出栈一次 O(n) Source Code Problem: User: co ...

  5. Windows 虚拟机 VM

    VMware是全球台式电脑及资料中心虚拟化解决方案的领导厂商.VMWare Workstation是该公司出品的“虚拟 PC”软件(即:大家常说的“虚拟机”),通过它可在一台电脑上同时运行更多的Mic ...

  6. 「STL」bitset正传

    前言 之前一些需要转二进制来解决的题目我看到很多大佬用了bitset. 然而我并不会这东西.看上去很高级的样子…… 改题改累了来学习一下233. 正文 一.bitset的构造 bitset有三种构造方 ...

  7. 02-Nov-2017 07:11:56.475 信息 [http-nio-8080-exec-10] com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource. Initializing c3p0 pool...

    报错: 02-Nov-2017 07:11:56.475 信息 [http-nio-8080-exec-10] com.mchange.v2.c3p0.impl.AbstractPoolBackedD ...

  8. java基础编程题(1)

    1. 题目:打印出杨辉三角形(要求打印出10行如下图) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1...... package com.jzq.test1; ...

  9. selenium基础(窗口截图)

    窗口截图 目的:当脚本执行出错时对当前窗口进行截图 方法:get_screenshot_as_file() #打开百度首页,搜索“selenium",完成后进行截图,并将结果保存至D:/te ...

  10. python语句结构(if判断语句)

    一.python语句结构分类 条件控制语句:if 语句 if....elif语句 if嵌套 循环语句:while语句    for循环 控制语句:break.continue.pass语句 二.pyt ...