SpringBoot集成MongoDB(3)|(MongoTemplate的List操作)
文章目录
- SpringBoot集成MongoDB(3)|(MongoTemplate的List操作)
- @[TOC]
- 前言
- 一、场景说明
- 一、向数组字段添加元素
- 二、从数组中删除元素
- 三、更新数组中元素值
- 四、查询数组中包含某个值的数据
- 五、查询数组中元素大小
- 总结
文章目录
- SpringBoot集成MongoDB(3)|(MongoTemplate的List操作)
- @[TOC]
- 前言
- 一、场景说明
- 一、向数组字段添加元素
- 二、从数组中删除元素
- 三、更新数组中元素值
- 四、查询数组中包含某个值的数据
- 五、查询数组中元素大小
- 总结
前言
MongoDB是一种高性能、可扩展的文档数据库,它使用类似于JavaScript的语言查询数据。在Java中,Spring Data MongoDB提供了一个MongoTemplate类,用于简化MongoDB的操作。本文将重点介绍如何使用MongoTemplate进行List操作。
一、场景说明
有一个Mongo集合,名称为:Doc,字段如下
{"id" : "100","name" : "文章1","version" : [ 1,2]
}
实体类如下:
@Data
@Document(collection = "doc")
public class Doc{@Idprivate String id;@Indexedprivate String name;List<Integer> version;
}
一、向数组字段添加元素
说明:文章新增一个版本,在版本列表中添加一个新的版本号3。
Query query = new Query(Criteria.where("id").is("100"));Update update = new Update().push("version", 3);mongoTemplate.updateFirst(query, update, Doc.class);
二、从数组中删除元素
说明:文章有很多版本,现在在已有的版本3中删除改文档。
Query query = new Query(Criteria.where("id").is("100"));Update update = new Update().pull("version", 3);mongoTemplate.updateFirst(query, update, Doc.class);
三、更新数组中元素值
说明:文章有很多版本,现在将版本1改为版本5。
Query query = new Query(Criteria.where("id").is("100").and("version").is(1));Update update = new Update().set("1.$", 5);mongoTemplate.updateFirst(query, update, Doc.class);
四、查询数组中包含某个值的数据
说明:文章有很多版本,查询包含有版本1的文章。
Query query = new Query(Criteria.where("version").in(1));List<Doc> users = mongoTemplate.find(query, Doc.class);
五、查询数组中元素大小
说明:文章有很多版本,查询文章版本的大小。versionCount这个为自定义字段,CountResult这个为自定义接收对象
Aggregation aggregation = Aggregation.newAggregation(Aggregation.project().andExpression("size(version)").as("versionCount"));AgeregationResults<CountResult> results = mongoTemplate.aggregate(aggregation, "doc", CountResult.class);int versionCount = results.getUniguelMappedResult().getVersionCount();
总结
以上就是SpringBoot集成MongoDb数据库内容实现如何使用MongoTemplate进行List操作的技术分享,希望对大家有用,也可以进群交流。