热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringBoot整合MongoDB及基本使用

目录1.MongoDB基本介绍2.MongoDB的特点3.MongoDB的体系结构4.MongoDB的数据类型5.SpringBoot整合MongoDB**1.导入依赖2

目录

1.MongoDB基本介绍

2.MongoDB的特点

3.MongoDB的体系结构 

 4.MongoDB的数据类型

5.SpringBoot整合MongoDB **

1.导入依赖

2.启动MongoDB数据库

 3.编写启动类

 4.编写实体类(基本操作 每一个表都对应一个实体)

5.测试 增删改查(API)




1.MongoDB基本介绍


MongoDB介绍_30岁老阿姨的博客-CSDN博客_mongodb介绍


MongoDB是一个文档数据库,MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,数据格式是BSON,一种类似JSON的二进制形式的存储格式,简称Binary JSON ,和JSON一样支持内嵌的文档对象和数组对象,因此可以存储比较复杂的数据类型。

对于数据量大而言,显然不能够使用关系型数据库和内存数据库进行存储,我们需要通过MongoDB进行存储


2.MongoDB的特点

MongoDB 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它是一个面向集合的,模式自由的文档型数据库。

具体特点总结如下:


  1. 面向集合存储,易于存储对象类型的数据

  2. 模式自由

  3. 支持动态查询

  4. 支持完全索引,包含内部对象

  5. 支持复制和故障恢复

  6. 使用高效的二进制数据存储,包括大型对象(如视频等)

  7. 自动处理碎片,以支持云计算层次的扩展性

  8. 支持 Python,PHP,Ruby,Java,C,C#,Javascript,Perl及C++语言的驱动程 序, 社区中也提供了对Erlang及.NET 等平台的驱动程序

  9. 文件存储格式为 BSON(一种 JSON 的扩展)


3.MongoDB的体系结构 

 MongoDB 的逻辑结构主要由:数据库(database)、 集合(collection)、文档(document)这三部分组成的。


  1. MongoDB 的文档(document),相当于关系数据库中的一行记录。

  2. 多个文档组成一个集合(collection),相当于关系数据库的表。

  3. 多个集合(collection),逻辑上组织在一起,就是数据库(database)。

  4. 一个 MongoDB 实例支持多个数据库(database)。 文档(document)、集合(collection)、数据库

 SQL和MongoDB对比


RDBMSMongoDB
database(数据库)database(数据库)
table (表)collection( 集合)
row( 行)document( BSON 文档)
column (列/字段)field (字段)
index(唯一索引、主键索引)index (支持地理位置索引、全文索引)
join (主外键关联)MongoDB不支持
primary key(指定某个列做主键)primary key (不需要指定 固定 _id 字段做为主键 自带的)

 4.MongoDB的数据类型


数据类型说明解释说明Document举例
String字符串UTF-8 编码的字符串才是 合法的。{key:“cba”}
Integer整型数值根据你所采用的服务器, 可分为 32 位或 64 位。{key:1}
Boolean布尔值用于存储布尔值(真/ 假)。{key:true}
Double双精度浮点值用于存储浮点值{key:3.14}
ObjectId对象ID用于创建文档的ID{_id:new ObjectId()}
Array数组用于将数组或列表或多个 值存储为一个键{arr:[“a”,“b”]}
Timestamp时间戳从开始纪元开始的毫秒数{ ts: new Timestamp() }
Object内嵌文档文档可以作为文档中某个 key的value{o:{foo:“bar”}}
Null空值表示空值或者未定义的对 象{key:null}
Date或者 ISODate格林尼治时间日期时间,用Unix日期格 式来存储当前日期或时 间。{birth:new Date()}
File文件1、二进制转码(Base64)后 存储 (<16M) 2、 GridFS(>16M)GridFS 用两个集合来存储一个文件:fs.files与 fs.chunks 真正存储需要使用mongofiles -d gridfs put song.mp

5.SpringBoot整合MongoDB **


1.导入依赖

org.springframework.bootspring-boot-starter-parent2.1.0.RELEASEorg.springframework.bootspring-boot-starter-data-mongodborg.projectlomboklombok1.18.10org.springframework.bootspring-boot-starter-testtest

org.apache.maven.pluginsmaven-compiler-plugin3.11.81.8UTF-8

2.启动MongoDB数据库


看网上一些教程吧,我这里linux安装的



 3.编写启动类


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class MongoApplication {public static void main(String[] args) {SpringApplication.run(MongoApplication.class, args);}
}

 4.编写实体类(基本操作 每一个表都对应一个实体)

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.bson.types.ObjectId;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;@Data
@AllArgsConstructor
@NoArgsConstructor
@Document("user")//这里最好写上 表示操作哪个集合(表)
public class User {@Idprivate ObjectId id;private String username;private Integer age;private String address;
}

5.测试 增删改查(API)

1.首先依赖出入   MongoTemplate(MongoDB依赖中的)

2.新增代码(如果数据库中没有集合(表),会自动创建)

// 新增@Testpublic void text01(){User user = new User(new ObjectId(),"jack",11,"天津");
// User user1 = mongoTemplate.insert(user);User user1 = mongoTemplate.insert(user, "user");//指定字段添加System.out.println(user1);}

3.删除

@Testpublic void text02(){Query query = new Query();//条件对象DeleteResult remove = mongoTemplate.remove(query,User.class);//没条件 全删 后边要加上实体类对应的表System.out.println(remove);//两条数据}

@Test//根据条件删除public void text03(){Query query = new Query(Criteria.where("id").is(new ObjectId("6354084f8136ce1f102b9003")));DeleteResult remove = mongoTemplate.remove(query, User.class);System.out.println(remove);}@Test//多条件删除public void text04(){Query query = new Query(Criteria.where("username").is("jack1").and("age").is(12));DeleteResult remove = mongoTemplate.remove(query,User.class);System.out.println(remove);}

4.修改

@Testpublic void text05(){Query query = new Query(Criteria.where("age").gt(12));//条件 age > 12Update update = new Update();update.set("username","huahua");UpdateResult updateResult = mongoTemplate.updateMulti(query, update, User.class);System.out.println(updateResult);}

5.查询

// 查询 根据id 做查询@Testpublic void text06(){User user = mongoTemplate.findById(new ObjectId("6354086f8136ce237011c305"), User.class);System.out.println(user);
// 全查询List userList = mongoTemplate.findAll(User.class);for (User user1 : userList) {System.out.println(user1);}}@Test//条件查询public void text07(){Query query = new Query(Criteria.where("username").regex("h"));List users = mongoTemplate.find(query, User.class);System.out.println(users);}@Test //条件查询 orpublic void text08(){Query query = new Query(Criteria.where("").orOperator(Criteria.where("age").is(14),Criteria.where("address").regex("海")));List users = mongoTemplate.find(query, User.class);for (User user : users) {System.out.println(user);}}@Test//分页查询public void text09(){Query query = new Query();query.skip(1).limit(3);//第一条数据和第二条数据 从第几页开始 展示几条数据query.with(Sort.by(Sort.Direction.DESC,"age"));//降序List users = mongoTemplate.find(query, User.class);for (User user : users) {System.out.println(user);}}

springboot操作mongodb基本都是一些api ,用到的时候查询即可



推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 本文是关于C#类型系统、值类型和引用类型的概念性笔记。介绍了C#1系统类型的三个特性,静态类型的含义,显式类型和隐式类型的区别。还讨论了类、结构、数组类型、枚举、委托类型和接口类型属于哪一种类型。同时纠正了关于结构、引用类型和对象传递的错误表述。最后提到了C#4中使用动态类型的关键字。 ... [详细]
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
  • REVERT权限切换的操作步骤和注意事项
    本文介绍了在SQL Server中进行REVERT权限切换的操作步骤和注意事项。首先登录到SQL Server,其中包括一个具有很小权限的普通用户和一个系统管理员角色中的成员。然后通过添加Windows登录到SQL Server,并将其添加到AdventureWorks数据库中的用户列表中。最后通过REVERT命令切换权限。在操作过程中需要注意的是,确保登录名和数据库名的正确性,并遵循安全措施,以防止权限泄露和数据损坏。 ... [详细]
author-avatar
Zan吴磊Leo
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有