博客
关于我
neo4j图形数据库Java应用
阅读量:789 次
发布时间:2023-02-14

本文共 3943 字,大约阅读时间需要 13 分钟。

Neo4j 数据库操作示例

本文将介绍Neo4j数据库的基本操作,包括节点创建、关系创建、查询优化以及常用Cypher语句示例。

一、创建节点和关系

Neo4j支持通过Cypher语句创建节点和关系。以下是创建明星节点及其关系的示例:

CREATE (a:明星 {名称: "陈冠希"}),       (b:明星 {名称: "王菲"}),       (c:明星 {名称: "李亚鹏"}),       (d:明星 {名称: "瞿颖"}),       (e:明星 {名称: "张柏芝"}),       (f:明星 {名称: "谢霆锋"}),       (g:明星 {名称: "周迅"}),       (h:明星 {名称: "张亚东"}),       (i:明星 {名称: "窦唯"}),       (j:明星 {名称: "窦鹏"}),       (k:明星 {名称: "李大齐"}),       (l:明星 {名称: "朴树"}),       (m:明星 {名称: "梁朝伟"}),       (n:明星 {名称: "刘嘉玲"}),// 关系创建示例周迅 - [:旧爱] -> 窦鹏,周迅 - [:旧爱] -> 李大齐,周迅 - [:旧爱] -> 朴树,周迅 - [:旧爱] -> 李亚鹏,周迅 - [:绯闻] -> 梁朝伟,周迅 - [:绯闻] -> 谢霆锋,王菲 - [:离异] -> 李亚鹏,王菲 - [:旧爱] -> 谢霆锋,王菲 - [:离异] -> 窦唯,谢霆锋 - [:旧友] -> 陈冠希,谢霆锋 - [:离异] -> 张柏芝,张亚东 - [:制作人] -> 朴树,张亚东 - [:离异] -> 窦颖,张亚东 - [:制作人] -> 王菲,李亚鹏 - [:旧爱] -> 瞿颖,陈冠希 - [:旧爱] -> 张柏芝,瞿颖 - [:旧爱] -> 张亚东,窦唯 - [:堂兄弟] -> 窦鹏,窦唯 - [:兄妹] -> 窦颖,梁朝伟 - [:夫妻] -> 刘嘉玲,王菲 - [:好友] -> 刘嘉玲

二、直接关系查询

使用Cypher快速查询明星之间的直接关系:

MATCH m = (周迅:明星 {名称:"周迅"}) - [*..1] - () RETURN m

三、最短路径查询

查询周迅到王菲的最短路径:

MATCH p = AllShortestPaths((周迅:明星 {名称:"周迅"}) - [*..6] - (王菲:明星 {名称:"王菲"})) RETURN p

四、Cypher 语句示例

以下是一些常用的Cypher语句:

  • 匹配所有明星
  • MATCH (n:明星) RETURN n
    1. 匹配明星的直接关系
    2. MATCH m = (周迅:明星 {名称:"周迅"}) - [*..1] - () RETURN m
      1. 查询最短路径
      2. MATCH p = AllShortestPaths((周迅:明星 {名称:"周迅"}) - [*..6] - (王菲:明星 {名称:"王菲"})) RETURN p
        1. 查询旧爱关系
        2. MATCH p = () - [:旧爱] - () - [:旧爱] - () RETURN p LIMIT 50
          1. 查询多级旧爱关系
          2. MATCH p = () - [:旧爱] - () - [:旧爱] - () RETURN p LIMIT 50
            1. 查询多级关系
            2. MATCH p = () - [:旧爱] - () - [:旧爱] - () - [:旧爱] - () RETURN p LIMIT 50

              五、直接操作数据库文件

              如果使用Neo4j的Java API直接操作数据库文件(确保服务已关闭),可以按照以下方式进行:

              package com;import java.io.File;import org.neo4j.graphdb.GraphDatabaseService;import org.neo4j.graphdb.Node;import org.neo4j.graphdb.Relationship;import org.neo4j.graphdb.Transaction;import org.neo4j.graphdb.factory.GraphDatabaseFactory;public class Neo4jJavaAPIDBOperation {    public static void main(String[] args) {        GraphDatabaseFactory dbFactory = new GraphDatabaseFactory();        GraphDatabaseService db = dbFactory.newEmbeddedDatabase(new File("E:/neo4j-community-3.3.5/data/databases/graph.db"));        try (Transaction tx = db.beginTx()) {            Node javaNode = db.createNode(Tutorials.JAVA);            javaNode.setProperty("TutorialID", "JAVA001");            javaNode.setProperty("Title", "Learn Java");            javaNode.setProperty("NoOfChapters", "25");            javaNode.setProperty("Status", "Completed");            Node scalaNode = db.createNode(Tutorials.SCALA);            scalaNode.setProperty("TutorialID", "SCALA001");            scalaNode.setProperty("Title", "Learn Scala");            scalaNode.setProperty("NoOfChapters", "20");            scalaNode.setProperty("Status", "Completed");            Relationship relationship = javaNode.createRelationshipTo(                    scalaNode, TutorialRelationships.JVM_LANGIAGES);            relationship.setProperty("Id", "1234");            relationship.setProperty("OOPS", "YES");            relationship.setProperty("FP", "YES");            tx.success();        }        System.out.println("Done successfully");    }}enum Tutorials implements Label {    JAVA, SCALA, SQL, NEO4J;}enum TutorialRelationships implements RelationshipType {    JVM_LANGIAGES, NON_JVM_LANGIAGES;}

              六、Maven 项目依赖

              Neo4j项目的Maven依赖配置如下:

              4.0.0
              com.test
              neo4j
              0.0.1-SNAPSHOT
              org.neo4j
              neo4j
              3.3.5
              org.neo4j.driver
              neo4j-java-driver
              1.4.4

              七、与 Spring 集成(未完待续)

              以上为本文的全部内容,后续将继续探讨Neo4j与Spring的集成方案。

    转载地址:http://dfcfk.baihongyu.com/

    你可能感兴趣的文章
    MySQL高可用切换_(5.9)mysql高可用系列——正常主从切换测试
    查看>>
    MySQL高可用解决方案
    查看>>
    MySQL高可用解决方案详解
    查看>>
    MYSQL高可用集群MHA架构
    查看>>
    MySQL高可用集群架构MHA企业级实战
    查看>>
    MySQL高级-MySQL存储引擎
    查看>>
    MySQL高级-MySQL并发参数调整
    查看>>
    MySQL高级-MySQL应用优化
    查看>>
    MySQL高级-MySQL查询缓存优化
    查看>>
    MySQL高级-MySQL锁
    查看>>
    MySQL高级-SQL优化
    查看>>
    MySQL高级-SQL优化步骤
    查看>>
    MySQL高级-内存管理及优化
    查看>>
    MySQL高级-存储过程和函数
    查看>>
    MySQL高级-索引
    查看>>
    MySQL高级-索引的使用及优化
    查看>>
    MySQL高级-视图
    查看>>
    MySQL高级-触发器
    查看>>
    Mysql高级——锁
    查看>>
    mysql高级查询~分页查询
    查看>>