文档章节

MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

T
 TcWong
发布于 08/18 02:22
字数 519
阅读 56
收藏 1

SpringBoot 中对 MongoDB 的 基本操作

Database 库的创建

首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库:

增加用户User:

创建 Collections 集合(类似mysql 中的 表):

后面我们大部分都是基于创建的Collection “collectiondemo”操作的。

依赖包

  <dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-mongodb</artifactId>
			<version> 2.1.7.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<version> 2.1.7.RELEASE</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
			<version> 2.1.7.RELEASE</version>
		</dependency>
	</dependencies>

SpringBoot 中 application.properties 文件配置

spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=mongodemo
spring.data.mongodb.username=login
spring.data.mongodb.password=login

MongoDB 中的 增删改查 操作

定义 MongoTemplate

	 @Autowired
	private MongoTemplate mongoTemplate;

	private static String COLLECTION_DEMO = "collectiondemo";

基于 mongoTemplate 操作

添加数据
   @PostMapping("/insertDocument")
	public void insertDocument(String document) {
		//获取集合
		MongoCollection<Document> collection = mongoTemplate.getCollection(COLLECTION_DEMO);
		Document parse = Document.parse(document);
		//插入文档
		collection.insertOne(parse);
	}

postman 测试参数:

在 Robo 中 可以查询到:

添加数据成功 ,其中 ObjectId是一个12字节的 BSON 类型字符串, 由

组成

插入数据

	@PutMapping("/updateDocument")
	public Long updateDocument(String queryDocument, String ducument) {
		MongoCollection<Document> collection = mongoTemplate.getCollection(COLLECTION_DEMO);
		BasicDBObject queryParse = BasicDBObject.parse(queryDocument);
		BasicDBObject parse = BasicDBObject.parse(ducument);
		UpdateResult result = collection.updateOne(queryParse, new BasicDBObject("$set",parse));
		return result.getModifiedCount();
	}

输入参数:

可以看到:

但有个问题,当参数中 key 在 mongodb 不存在时,会自己创建:

之前mongodb并没有 age 字段,现在可以看到:

这可能对有些业务场景,对key要求严格的 就无法通过这个满足条件 ,此时mongodb 中 可以用$exists 解决:

	@PutMapping("/updateDocumentOnlyHave")
	public Long updateDocumentOnlyHave(String id, String ducument) {
		MongoCollection<Document> collection = mongoTemplate.getCollection(COLLECTION_DEMO);
		BasicDBObject parse = BasicDBObject.parse(ducument);
		Set<String> keySet = parse.keySet();
		BasicDBObject dbObject = new BasicDBObject();
		dbObject.put("id",id);
		for (String key : keySet) {
			dbObject.put(key, new BasicDBObject("$exists",true));
		}
		UpdateResult result = collection.updateOne(dbObject, new BasicDBObject("$set",parse));
		return result.getModifiedCount();
	}

查询数据

	@GetMapping("/listDocuments")
	public List<Document> findDocuments() {
		MongoCollection<Document> collection = mongoTemplate.getCollection(COLLECTION_DEMO);
		FindIterable<Document> documents = collection.find();
		List<Document> listDocuments = new ArrayList<>();
		for (Document document : documents) {
			listDocuments.add(document);
		}
		return listDocuments;
	}

删除数据

  @DeleteMapping("/deleteDocument")
	public DeleteResult deleteDocument(String name) {
		MongoCollection<Document> collection = mongoTemplate.getCollection(COLLECTION_DEMO);
		DeleteResult result = collection.deleteOne(new BasicDBObject("name", name));
		return result;
	}

© 著作权归作者所有

T
粉丝 7
博文 49
码字总数 49219
作品 0
深圳
私信 提问
SpringBoot | 第三十一章:MongoDB的集成和使用

前言 上一章节,简单讲解了如何集成。本章节,我们来看看如何集成的。是最早热门非关系数据库的之一,使用也比较普遍。最适合来存储一些非结构数据了,适合对大量或者无固定格式的数据进行存...

oKong
2018/11/01
1K
2
JAVA springboot b2b2c多用户商城系统源码 (八)springboot整合mongodb

准备工作 安装 MongoDB jdk 1.8 maven 3.0 idea 环境依赖 在pom文件引入spring-boot-starter-data-mongodb依赖: 数据操作dao层 写一个接口,继承MongoRepository,这个接口有了几本的CURD的...

sccspuercode
03/15
92
0
MongoDB最简单的入门教程之四:使用Spring Boot操作MongoDB

Spring Boot 是一个轻量级框架,可以完成基于 Spring 的应用程序的大部分配置工作。Spring Boot的目的是提供一组工具,以便快速构建容易配置的Spring应用程序,省去大量传统Spring项目的繁琐配...

jerrywangsap
2018/09/28
0
0
spring中怎么使用mongodb自带的主键生成策略?

在$./mongo 里添加文档的时候都会自动生成一个objectId,这个操作如何在spirng中实现?目前用的springBoot mongodb,主键需要自己定义,有没有办法让mongodb自动为其生成主键,而不是自定义生...

Anur
2017/11/16
348
3
Mongodb File Server 1.0.1,基于 Spring Boot 2.0.3

Mongodb File Server 更新到1.0.1,基于Spring Boot 2.0.3。详细更新如下: MongoDB 3.6.4 Spring Boot 2.0.3.RELEASE Spring Data MongoDB 2.0.8.RELEASE Spring 5.0.7.RELEASE Thymeleaf 3......

waylau
2018/07/01
961
4

没有更多内容

加载失败,请刷新页面

加载更多

无回路有向图的拓扑排序

因公司业务需要,在表单中每个字段都会配置自动计算,但自动计算公式中会引用到其他字段中的值。所以希望可以根据计算公式,优先计算引用的公式。所以最终使用了无回路有向图的扩扑排序来实现...

兜兜毛毛
44分钟前
4
0
如何抢占云栖大会C位?史上最强强强攻略来了

点击观看视频: APSARA云栖大会开发者情怀 原文链接 本文为云栖社区原创内容,未经允许不得转载。

阿里云官方博客
58分钟前
5
0
Kubernetes 从懵圈到熟练:集群服务的三个要点和一种实现

作者 | 声东 阿里云售后技术专家<br /> 文章来源:Docker,点击查看原文。 <br />以我的经验来讲,理解 Kubernetes 集群服务的概念,是比较不容易的一件事情。尤其是当我们基于似是而非的理解...

阿里巴巴云原生
今天
7
0
PHP7.3的新特性

2018年12月6日,PHP7.3正式版发布,在PHP7.2基础上进行了大量错误修复和安全优化,性能提升10%! 从目前的更新说明来看,PHP 7.3 并不是一个主打新特性的版本,包含更多的是 bug 修复。PHP 7...

迅睿CMS-PHP开源CMS程序
今天
7
0
Tomcat 应用中并行流带来的类加载问题

本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/f-X3n9cvDyU5f5NYH6mhxQ 作者:肖铭轩、王道环 随着 Java8 的不断流行,越来越多的开发人员使用并行流(parallel)...

vivo互联网技术
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部