zoukankan      html  css  js  c++  java
  • neo4j的搭建和实例使用

    一. 简介

    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

  • 相关阅读:
    重新排列数组
    一维数组的动态和
    aiohttp实现爬虫功能
    python django项目创建及前期准备(使用pycharm)
    vue 使用高德开放平台获取经纬度
    git切换分支时,该分支的修改被带到另一个分支
    vue刻度尺组件
    js将PDF转为base64格式,并在将base64格式PDF回显在页面中
    Linux系统(Centos)安装tomcat和部署Web项目
    linux下安装 tomcat 和配置防火墙开放8080端口
  • 原文地址:https://www.cnblogs.com/jpfss/p/11338332.html
Copyright © 2011-2022 走看看