zoukankan      html  css  js  c++  java
  • Neo4j入门详细教程

    Neo4j安装配置

    (1)下载安装包

    (2)安装jdk

    (3)环境变量配置

    分三步,具体参考  https://www.bilibili.com/video/BV1Nz411q7bG?from=search&seid=11789489567953530494

    Neo4j常用命令

    neo4j install-service  # 安装服务
    neo4j uninstall-service  # 卸载服务

    neo4j console  # 控制台启动

      neo4j start  # 启动
      neo4j stop  # 停止
      neo4j restart  # 重启

    启动成功后访问 http://localhost:7474/browser/ 或者 http://127.0.0.1:7474/browser/

    账号密码默认 neo4j

    Neo4j相关概念

    节点:

      节点是图数据库中的一个基本元素,表示一个具体的实体,可以类比成关系数据库中的记录

    关系:

      关系是图数据库中节点之间的连接,也表示成节点之间的边,neo4j中关系是双向的

    属性:

      属性是对节点以及关系的一种说明,可以类比成关系数据库中的字段或者列,这里需要强调的是,在图数据库中关系也是可以设计属性的。

    标签:

      标签(label)是同一类节点的组合,但是并不是在同一标签下的节点一定包含相同属性。

    路径:

      路径是图数据库建立之后,任意两个节点之间的连通管理,是关系的组合。

    cypher语言快速入门

    cypher是一种非常简洁的图查询语言,可以在shell与浏览器端直接执行。其基本语法包含以下四个部分:

    start:设定查找的起始节点

    match:匹配图形模式, 可以定位感兴趣数据的子图形

    where:对查询数据进行过滤

    limit:限制查询数量

    return:返回结果

    注意:在新版本的neo4j中start可以省略

    CREATE 创建一个节点

    使用 Cypher 生成一个小的社交图.

    CREATE (ee:Person { name: "Emil", from: "Sweden", klout: 99 })
    • CREATE 创建数据的子句
    • () 圆括号表示一个节点
    • ee:Person 变量 'ee' 和 标签 'Person' 表示新的 节点
    • 花括号添加属性到节点

    MATCH 查找节点

    查找表示 Emil 的节点:

    MATCH (ee:Person) WHERE ee.name = "Emil" RETURN ee;
    • MATCH 指定节点和关系的模式的子句
    • (ee:Person) 带有标签 "Person" 的单节点模式, 将匹配项赋给变量 "ee"
    • WHERE 约束结果的子句
    • ee.name = "Emil" 比较 name 属性与 "Emil" 值
    • RETURN 用于请求特定结果的子句

      ee是变量,通过where查询相匹配的节点,并返回该变量ee

    创建更多 节点和关系

    CREATE子句可以一次创建多个节点及关系.

    MATCH (ee:Person) WHERE ee.name = "Emil"
    CREATE (js:Person { name: "Johan", from: "Sweden", learn: "surfing" }),
    (ir:Person { name: "Ian", from: "England", title: "author" }),
    (rvb:Person { name: "Rik", from: "Belgium", pet: "Orval" }),
    (ally:Person { name: "Allison", from: "California", hobby: "surfing" }),
    (ee)-[:KNOWS {since: 2001}]->(js),(ee)-[:KNOWS {rating: 5}]->(ir),
    (js)-[:KNOWS]->(ir),(js)-[:KNOWS]->(rvb),
    (ir)-[:KNOWS]->(js),(ir)-[:KNOWS]->(ally),
    (rvb)-[:KNOWS]->(ally)

     

    节点和关系

    Cypher 采用一对圆括号 () 来表示节点,如 (n:角色) 表示一个 角色 节点,n 是变量名,供命令执行时用 n 来访问这个节点,在命令执行完毕后就无法使用了。同时单独的 () 表示一个匿名节点,在匹配时表示匹配所有节点。

    在关系中

    • --表示无方向的关系

    • --> 表示有方向的关系

    • -[r]-> 则给关系赋予一个变量名,方便对这个关系进行操作

    • -[r:配偶]-> 匹配关系为 配偶 的类型

    模式匹配 描述在图中查找的内容

    例如, 一个用来查找 Emil 的朋友的模式:

    MATCH (ee:Person)-[:KNOWS]-(friends)
    WHERE ee.name = "Emil" RETURN ee, friends
    • MATCH用于描述从已知节点到找到的节点的模式的子句
    • (ee)模式以 Person 开始 (由 WHERE 限定)
    • -[:KNOWS]-匹配 "KNOWS 关系 (任意方向)
    • (friends)将绑定为 Emil 的朋友

    推荐 使用模式

    模式匹配可以用来做推荐. Johan 正在学 冲浪, 因此他想找到一个冲浪的新朋友:

    MATCH (js:Person)-[:KNOWS]-()-[:KNOWS]-(surfer)
    WHERE js.name = "Johan" AND surfer.hobby = "surfing"
    RETURN DISTINCT surfer
    • ()空的圆括号表示忽略这些节点
    • DISTINCT因为不止一条路径将与模式匹配
    • surfer将包含 Allison, 一个朋友的朋友, 且冲浪

    分析 使用可视化查询计划

    要了解查询的工作原理, 可在查询之前加 EXPLAIN 或 PROFILE:

    PROFILE MATCH (js:Person)-[:KNOWS]-()-[:KNOWS]-(surfer)
    WHERE js.name = "Johan" AND surfer.hobby = "surfing"
    RETURN DISTINCT surfer

    Cypher入门常用到的语句,推荐!

    更多 Cypher 语法内容请查看 https://neo4j.com/docs/cypher-refcard/3.5/

     以下为其他内容

    Neo4j清空数据

    一、用下列 Cypher 语句:

    match (n) detach delete n

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

    少量数据推荐第一种方案,数据量大容易内存溢出,因为是先查出来再删除,所以数据量大推荐第二种方案

    关系结构图

    有方向关系图

    无方向关系图

    附一张建好节点关系的图片(*^_^*)

  • 相关阅读:
    软件项目管理实践之日计划
    VB.NET版机房收费系统—数据库设计
    图的邻接矩阵存储结构
    Java多态特性:重载和覆写的比較
    《实体解析与信息质量》
    cocos2d-x lua 中使用protobuf并对http进行处理
    Memcached 笔记与总结(2)编译 php-memcache 扩展
    大数据的时代意义
    大数据的时代意义
    SPSS输出结果统计表与统计图的专业性编辑及三线表定制格式
  • 原文地址:https://www.cnblogs.com/1314h/p/15092899.html
Copyright © 2011-2022 走看看