博客
关于我
neo4j图形数据库Java应用
阅读量:794 次
发布时间: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工作笔记006---Mysql服务器磁盘爆满了_java.sql.SQLException: Error writing file ‘tmp/MYfXO41p‘
    查看>>
    MYSQL数据库下载安装(Windows版本)
    查看>>
    MySQL数据库与Informix:能否创建同名表?
    查看>>
    MySQL数据库操作
    查看>>
    MYSQL数据库简单的状态检查(show processlist)
    查看>>
    mysql数据恢复
    查看>>
    MySQL数据读写分离(MaxScale)上干货!!!
    查看>>
    Mysql新建用户和数据库并授权
    查看>>
    MySQL日期时间函数大全
    查看>>
    MySQL更新锁(for update)摘要
    查看>>
    MySQL服务器安装(Linux)
    查看>>
    mysql服务器查询慢原因分析方法
    查看>>
    mysql服务无法启动的问题
    查看>>
    mysql权限
    查看>>
    mysql条件查询
    查看>>
    MySQL架构与SQL的执行流程_1
    查看>>
    MySQL架构与SQL的执行流程_2
    查看>>
    MySQL查询优化之索引
    查看>>
    mysql查询储存过程,函数,触发过程
    查看>>
    mysql查询总成绩的前3名学生信息
    查看>>