博客
关于我
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/

    你可能感兴趣的文章
    nacos运行报错问题之一
    查看>>
    Nacos部署中的一些常见问题汇总
    查看>>
    NACOS部署,微服务框架之NACOS-单机、集群方式部署
    查看>>
    Nacos配置Mysql数据库
    查看>>
    Nacos配置中心中配置文件的创建、微服务读取nacos配置中心
    查看>>
    Nacos配置中心集群原理及源码分析
    查看>>
    nacos配置在代码中如何引用
    查看>>
    nacos配置新增不成功
    查看>>
    nacos配置自动刷新源码解析
    查看>>
    nacos集成分布式事务插件Seata的序列化问题,实际上是Seata本身存在bug!!
    查看>>
    Nacos集群搭建
    查看>>
    nacos集群搭建
    查看>>
    nacos集群网络分区对的影响和运维方式
    查看>>
    nacos集群节点故障对应用的影响以及应急方法
    查看>>
    nacos集群配置详解
    查看>>
    Nagios 3.0 Jumpstart Guide For Linux – Overview, Installation and Configuration
    查看>>
    nagios 实时监控 iptables 状态
    查看>>
    WAP短信格式解析及在Linux下用C语言实现
    查看>>
    nagios+cacti整合
    查看>>
    Nagios介绍
    查看>>