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

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;
	}

转载于:https://my.oschina.net/tcwong/blog/3093972

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值