Chao's Blog Chao's Blog
首页
  • vue

    • vue路由
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • java
  • spring
  • springboot
  • springcloud
  • git
  • maven
  • nginx
  • tomcat
  • springmvc
  • jvm
  • 图数据库
  • mysql数据库
  • redis数据库
  • windows下docker安装nginx并挂载目录
  • linux命令
  • linux安装软件
  • linux脚本
  • idea
  • vscode
  • 归档
  • 综合项目

    • 若依项目
    • mall项目
  • java
  • mybatis
  • xxl-job
  • mybatis
GitHub (opens new window)

~chao

永远菜鸟,不断努力~
首页
  • vue

    • vue路由
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • java
  • spring
  • springboot
  • springcloud
  • git
  • maven
  • nginx
  • tomcat
  • springmvc
  • jvm
  • 图数据库
  • mysql数据库
  • redis数据库
  • windows下docker安装nginx并挂载目录
  • linux命令
  • linux安装软件
  • linux脚本
  • idea
  • vscode
  • 归档
  • 综合项目

    • 若依项目
    • mall项目
  • java
  • mybatis
  • xxl-job
  • mybatis
GitHub (opens new window)
  • cypher图数据

    • 图数据库及cypher语句
    • mysql数据库

    • redis数据库

    • oracle数据库

    • 数据库
    • cypher图数据
    ~chao
    2022-11-14
    目录

    图数据库及cypher语句

    # 图数据库及cypher语句

    # 1.对图数据库的理解

        最近工作中偶然使用到了图数据库,对图数据库的概念理解的还是比较模糊。刚开始我理解的节点和边都可以变相的理解为java中的类,标签 就是类的名字,比如 match (n:Person) return n limit 10   这个Person就是类,n就是类实例化后得变量名,但是标签又不完全等同于类,在java中相同名字的类只能有一个,Person可以有多个,这样解释反而有矛盾。过一段时间后我的理解有所改变,Person是标签的值,标签的值可以是Person,也可以是Animal,结合查询语句,可以把标签理解为“条件”,match (n:Person) return n limit 10,用文字描述就是,找出所有标签值是Person的数据,截取10条,将数据赋值给变量n。变量n可以类比为一个java对象,对象中有属性,对应的就是点和边的属性。
    

    # 2.java连接 图数据库

    java连接数据库的方式可以参考 Java连接Neo4j的两种方式 - 星朝 - 博客园 (cnblogs.com) (opens new window)

    # 3.cypher语句基本使用

    ———————————————— 版权声明:本文为CSDN博主「简单随风」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/lt326030434/article/details/83542676

    # 1.查询

    简单查询 查询10个Person节点

    match (n:Person) return n limit 10  
    
    1

    查询Person节点与Phone节点中有HAS_PHONE关系

    match  (n:Person)-[:HAS_PHONE]->(p:Phone) return n,p
    
    1

    查询10条关系:Person节点与Phone节点中有HAS_PHONE关系,且Person节点的name=‘姓名6’

    match  (n:Person)-[:HAS_PHONE]->(p:Phone) where n.name="姓名6" return n,p limit 20 
    
    1

    多维度查询 查询以下关系:Person节点n和Phone节点p1拥有HAS_PHONE关系,且p1节点与另一个Phone节点p2拥有CALL关系

    match  (n:Person)-[:HAS_PHONE]->(p1:Phone)-[:CALL]->(p2:Phone)   
    
    1

    关系查询 查询任意节点与任意节点间有CALL关系的关系

    match p=()-[:CALL]->()
    
    1

    正则查询 查询Users所有节点中,name符合正则’Jack.*'的节点

    match (n:Users) where n.name=~'Jack.*' return n
    
    1

    包含查询 查询Users所有节点中,name中包含’J’的节点

    match (n:Users) where n.name contains 'J' return n
    
    1
    # 2.创建

    简单创建 创建一个Person-LOVES->Dog的关系

    create (n:Person)-[:LOVES]->(m:Dog)
    
    1

    属性创建 创建Person-FEAR->Tiger的关系,且Person.name=‘李四’,FEAR.Level=1,Tiger.type=‘东北虎’

    create (n:Person{name:"李四"})-[:FEAR(Level:1)]->(M:Tiger{type:"东北虎"})
    
    1

    给两个没有关系的实体创建关系 创建一个关系k,使得name=“王五”的Person与name:"赵六"的Person有KNOW的关系

    match (n:Person{name:"王五"}), (m:Person{name:"赵六"})
    create (n)-[k:KNOW]->(m) return k
    
    1
    2

    有则返回,没有则创建:merge 如果创建的关系已存在,则返回该关系,如果创建的关系不存在,则创建

    match (n:Person{name:"王五"}), (m:Person{name:"赵六"})
    merge (n)-[k:KNOW]->(m) return k
    
    1
    2
    # 3.删除

    删除关系 删除name="李四"的Person节点与Tiger节点间的FEAR关系

    match (n:Person{name:"李四"})-[f:FEAR]->(M:Tiger)
    delete f
    
    1
    2

    删除实体 删除name="李四"的Person节点

    match (n:Person{name:"李四"})
    delete n
    
    1
    2

    删除重复节点 如果有多个name=“张三”的People节点,删除只保留一个

    match (p:People{name:"张三"}) with p skip 1 delete p
    
    1
    # 4.修改

    修改属性 给type="东北虎"的Tiger节点插入age标签,且age的属性为10

    match (t:Tiger) where t.type="东北虎" set t.age=10 return t
    
    1

    修改关系名称 将HAS_Phone修改为HAS_PHONE

    match (a)-[h:HAS_Phone]->(b) 
    create (a)-[h2:HAS_PHONE]->(b) 
    set h2=h 
    with h 
    delete h
    
    1
    2
    3
    4
    5
    # 5.创建唯一索引

    给Phone节点创建唯一索引number

    CREATE CONSTRAINT ON (p:Phone) ASSERT p.number IS UNIQUE
    
    1
    编辑 (opens new window)
    上次更新: 2024/01/26, 05:03:22
    第00章_写在前面

    第00章_写在前面→

    最近更新
    01
    python使用生成器读取大文件-500g
    09-24
    02
    Windows环境下 Docker Desktop 安装 Nginx
    04-10
    03
    使用nginx部署多个前端项目(三种方式)
    04-10
    更多文章>
    Theme by Vdoing | Copyright © 2022-2024 chaos | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式