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

    你可能感兴趣的文章
    Nancy之基于Nancy.Hosting.Aspnet的小Demo
    查看>>
    NAND NOR FLASH闪存产品概述
    查看>>
    nano 编辑
    查看>>
    nanoGPT 教程:从零开始训练语言模型
    查看>>
    NASA网站曝严重漏洞,或将沦为黑客钓鱼网站?
    查看>>
    Nash:轻量级、安全且可靠的脚本语言
    查看>>
    NAS、SAN和DAS的区别
    查看>>
    NAS个人云存储服务器搭建
    查看>>
    NAS服务器有哪些优势
    查看>>
    NAT PAT故障排除实战指南:从原理到技巧的深度探索
    查看>>
    nat 网卡间数据包转发_你是不是从来没有了解过光纤网卡,它跟普通网卡有什么区别?...
    查看>>
    NAT-DDNS内网穿透技术,快解析DDNS的优势
    查看>>
    NAT-DDNS内网穿透技术,快解析DDNS的优势
    查看>>
    NAT-DDNS内网穿透技术,解决动态域名解析难题
    查看>>
    natapp搭建外网服务器
    查看>>
    NativePHP:使用PHP构建跨平台桌面应用的新框架
    查看>>
    nativescript(angular2)——ListView组件
    查看>>
    NativeWindow_01
    查看>>
    Native方式运行Fabric(非Docker方式)
    查看>>
    Nature | 电子学“超构器件”, 从零基础到精通,收藏这篇就够了!
    查看>>