neo4j入门

目录

一、安装

二、CQL使用

三、Springboot(2.4以上版本)整合neo4j 

四、使用过程中的问题

1、自定义查询,cql无法接收变量

2、使用依赖去操作neo4j只有return才会执行

3、neo4j和mysql事务冲突

补充


一、安装

1、首先要配置jdk,默认电脑中有jdk

2、访问neo4j官网选择需要的版本进行下载,一般选择社区版就可以

Neo4j Download Center - Neo4j Graph Data Platform

 3、下载后的压缩包解压到想要路径(路径不要有中文)

 4、启动neo4j

在命令行中切换到安装目录的bin目录下,输入命令 ./neo4j start

 启动完就可以在浏览器中输入,会出现以下登录页面,初始密码都是neo4j,然后会引导修改密码

二、CQL使用

1、创建节点

语法:create (别名:节点名 {属性名:属性值})

create (n:`西游记` {name:'菩提老祖'})

2、创建关系

语法:CREATE (别名:节点名 {属性名:属性值})-[别名:关系名]->(别名:节点名 {属性名:属性值})

CREATE (n:`西游记` {name:'孙悟空'})-[r:师傅]->(m:`西游记` {name:'菩提老祖'})

2.1、从已有节点创建关系:先查到节点再创建关系

MATCH (n:`西游记` {name:"孙悟空"}),(m:`西游记` {name:"牛魔王"}) create (n)-[r:`义兄`]->(m)

3、查询节点

MATCH (n:`西游记` {name:"孙悟空"}) return n

也可以使用where条件 MATCH (n:`西游记`) WHERE n.name="孙悟空" RETURN n

4、set属性赋值

MATCH (n:`西游记` {name:"孙悟空"}) set n.skill='七十二变' return n

5、删除节点

语法:MATCH (别名:节点名 {属性名:属性值}) delete 别名(先找到节点再删除)

MATCH (n:`西游记` {name:"菩提老祖"}) delete n

直接删除节点会报错,因为这个节点存在关系,需要先删除关系

5.1、删除关系

MATCH (n:`西游记` {name:"菩提老祖"})<-[r]-(m) delete r

6、其他关键字ORDER BY、UNION、UNION ALL、IN、LIMIT、DISTINCT 等与mysql使用一样

6.1、in查询

注:in查询的元素是用中括号[ ]包括

MATCH (n:`西游记`) WHERE id(n) IN [1,2] RETURN n

7、索引

7.1、创建索引

7.2、删除索引

7.3、UNIQUE唯一约束

上面创建了唯一约束,再创建存在的节点就会报错

删除唯一约束

8、数据库备份

8.1、关闭neo4j

./neo4j stop

8.2、备份(备份文件夹需要存在)

./neo4j-admin dump --database "neo4j" --to=/Users/elroyelroy/soft/neo4j-community-4.4.15/backup/graph_backup.dump

8.3恢复

./neo4j-admin load --from=/Users/elroyelroy/soft/neo4j-community-4.4.15/backup/graph_backup.dump

--database "neo4j" --force

三、Springboot(2.4以上版本)整合neo4j 

1、yml配置文件添加配置

spring:
  neo4j:
    uri: bolt://localhost:7687
    authentication:
      username: neo4j
      password: 123456
  data:
    neo4j:
      database: neo4j

2、pom文件引入依赖

        <!-- neo4j 驱动 -->
        <dependency>
            <groupId>org.neo4j.driver</groupId>
            <artifactId>neo4j-java-driver</artifactId>
        </dependency>
        <!-- neo4j 操作实体注解需要 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-neo4j</artifactId>
        </dependency>

3、创建实体类和dao层

3.1、创建实体类

@Node("Star"):这个注解表示节点的名称
@Id @GeneratedValue:id自动生成策略
@Data
@NoArgsConstructor
@AllArgsConstructor
@Node("Star")
public class Star implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue
    private Long id;

    private String name;
}

3.2、创建Repository

这边需要继承ReactiveNeo4jRepository 来操作neo4j

@Repository
public interface StarRepository extends ReactiveNeo4jRepository<Star, Long> {

}

3.3、测试

注:return的值如果一个对象要用Mono<>返回,如果是个列表用Flux<>返回

    @Resource
    private StarRepository starRepository;

    @GetMapping("/all")
    public Flux<Star> all() {
        return starRepository.findAll();
    }

    
    @GetMapping("/add")
    public Mono<Star> add() {
        Star star = new Star();
//        Star.setId(1); // 修改时设置id就会修改对应id下面的值
        star.setName("蔡徐坤");
        return starRepository.save(star);
    }


    @GetMapping("/delete")
    public Mono<Void> delete() {
        return starRepository.deleteAll();
    }

四、使用过程中的问题

1、自定义查询,cql无法接收变量

使用@Query注解传入cql语句

这里接收动态参数时,网上找了很多种方式,{name},{0},$name,$0 等都会报错,自己测试是加个@Param 注解配合$ 才可以接收传进来的参数

    @Query("MATCH (n:Star{name:$name}) RETURN m")
    Mono<Star> findStarByName(@Param("name") String name);

2、使用依赖去操作neo4j只有return才会执行

在进行neo4j操作时,对数据库的增删改查操作都必须放在return行才会执行,这样会导致我们有些业务操作,或者多个节点操作无法在一个方法里面实现。

解决办法:

1)使用block()方法

在操作的最后调用.block()方法,会立即提交这个事务,并且返回这个对象的信息。

 list操作是blockFirst()和blockLast()。

这里list的操作也会全部提交执行,但是它只会返回第一个对象或者最后一个对象,如果只是想提交这个操作可以使用,如果有业务需要对提交后的列表信息进行操作这边就不建议使用。

2)Neo4jTemplate的使用

引入Neo4jTemplate,这边的操作就跟mybatisplus的操作无异,直接进行保存,并且保存后这个对象就会有保存后生成后的id等信息。

要注意的是,neo4jTemplate的返回值都是我们所操作的对象和List,这样使得我们在进行业务操作的时候更顺手,对比Mono<>和Flux<>简直不要太友好,从这一点来说,个人还是更喜欢使用neo4jTemplate。

3、neo4j和mysql事务冲突

在引入neo4j之后,一些加了@Transactional注解使用mysql事务的方法就会报错,有的甚至可能项目启动就报错了

这是因为在引入了Neo4J依赖库之后,transactionManager就变成了Neo4jTransactionManager,所以就要去修改默认事务。


    // 修改默认事务,加载了Neo4J依赖库之后,transactionManager变成Neo4jTransactionManager,不增加此处,启动会报错,Mysql无法使用。
    @Bean("transactionManager")
    @Primary
    public DataSourceTransactionManager transactionManager(DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    // neo4j事务
    @Bean(ReactiveNeo4jRepositoryConfigurationExtension.DEFAULT_TRANSACTION_MANAGER_BEAN_NAME)
    public ReactiveTransactionManager reactiveTransactionManager(
            Driver driver,
            ReactiveDatabaseSelectionProvider databaseNameProvider) {
        return new ReactiveNeo4jTransactionManager(driver, databaseNameProvider);
    }
    

 ​​​​​​

补充

Springboot整合也可以查看官方文档

官方        Spring Data Neo4j

中文翻译 Spring认证中国教育管理中心-Spring Data Neo4j教程一_技能咖的博客-CSDN博客

  • 26
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: "neo4j 3.x入门经典"是一本关于Neo4j图形数据库的入门经典教程,旨在帮助初学者快速了解Neo4j的基本概念和使用方法。 该PDF从一个非技术背景的角度开始,向读者介绍图形数据库和Neo4j的基础知识。随着阅读的深入,它逐渐介绍了Neo4j的各种功能和高级用法,包括图形建模、查询语言Cypher、索引和性能优化等。 这本书结构清晰,内容易于理解。读者可以按照自己的需要和兴趣选择性阅读,从入门到精通逐步提升对Neo4j的理解和应用能力。 读者将会了解到如何在Neo4j中创建节点和关系,如何使用Cypher语言进行复杂查询,如何优化图形数据库的性能,以及如何将Neo4j集成到现有的应用程序中。 此外,该书还提供了大量的实际示例和练习,帮助读者巩固所学知识,并将其应用到实际场景中。通过实际操作和实践,读者可以更好地理解Neo4j的优势和应用场景。 总之,"neo4j 3.x入门经典"是一本很好的入门教程,适用于对Neo4j感兴趣的初学者。阅读这本书后,读者将能够掌握Neo4j的基本概念和使用方法,为后续深入学习打下坚实的基础。 ### 回答2: 《Neo4j 3.x入门经典》是一本关于图数据库Neo4j入门指南,提供了详细的介绍和实践案例。该书主要包含以下内容: 首先,该书介绍了图数据库的基本概念和背景知识,让读者了解为什么选择Neo4j以及图数据库的应用场景。这样的介绍对于初学者来说很有帮助,可以让他们更好地理解Neo4j的优势和价值。 其次,该书详细讲解了Neo4j的安装和配置过程。通过指导读者一步步地安装和设置Neo4j,确保他们能够正确地使用该数据库。这一部分还包括了一些常见问题和解决方案,帮助读者克服安装和配置过程中可能遇到的困难。 接着,该书介绍了Neo4j的基本操作和常用命令。读者可以学习如何创建、读取、更新和删除节点和关系,以及如何使用Cypher查询语言进行高级查询。这些操作是使用Neo4j进行数据操作的基础,对于掌握Neo4j很重要。 最后,该书提供了一些实际案例和项目示例,帮助读者将所学的知识应用到实际项目中。通过这些案例,读者可以了解如何使用Neo4j解决实际问题,以及如何将Neo4j与其他工具和技术集成。 总的来说,《Neo4j 3.x入门经典》是一本很好的入门指南,适合初学者和想要深入学习Neo4j的人阅读。它将图数据库的基本概念和操作讲解得很清晰,同时还提供了实践案例,帮助读者将所学应用到实际项目中。不仅能够帮助读者快速上手Neo4j,还能够让他们更好地理解和掌握图数据库的优势和应用。 ### 回答3: "neo4j 3.x入门经典 pdf" 是指一本以Neo4j图数据库为主题的入门经典教程的PDF电子书。这本书主要介绍了Neo4j 3.x版本的图数据库的基本概念、使用方法和实践技巧。 Neo4j是一种图数据库,它以图的形式存储数据,并通过节点和关系的连接来表示数据之间的关系。相比传统的关系型数据库,Neo4j在处理复杂结构化数据和查询路径中的高效性方面具有显著的优势。 这本入门经典的PDF教程首先介绍了图数据库的概念和优势,并详细解释了Neo4j图数据库的基本原理和数据表示。它涵盖了如何安装和设置Neo4j数据库以及如何使用Cypher查询语言进行数据操作和检索。 此外,该教程还提供了丰富的实例和案例,帮助读者更好地理解Neo4j的实际应用。它介绍了如何创建节点、建立关系、进行复杂查询、执行事务等操作,以及如何使用Neo4j的可视化工具对图进行可视化和分析。 这本教程适合那些对图数据库和Neo4j有兴趣的初学者,也适合已有关系型数据库经验的人员想要掌握图数据库的知识。通过学习这本教程,读者可以快速入门Neo4j图数据库,并在实际项目中应用到自己的工作中。 总之,"neo4j 3.x入门经典 pdf" 是一本介绍Neo4j图数据库基础知识和实践技巧的电子书,对于想要学习和应用Neo4j的人来说,是一本非常实用的参考资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值