1、新建maven项目

pom.xml添加如下依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

2、配置文件

文件添加如下配置,根据自己的数据库名称和ip地址自行配置

spring.application.name=
spring.data.mongodb.uri=

3、配置类中注入MongoTemplate

数据操作层引入monoTemplate,无需配置,引入jar包后,会自动将MongoTemplate 类实例化对象添加到spring容器中,在此处用@Autowired直接注入即可。

@Autowired
private MongoTemplate mongoTemplate;

4、mongoTemplate的使用

mongoTemplate提供了如下方法:
insert():[插入数据],第一个参数可传入单个对应对象或对象集合,第二个参数传入要插入的表对应的类的class。
upsert():[插入或修改数据],第一个参数传入query对象,里面可以填入要查询的参数,第二个参数传入update对象,update可以将其理解成一个map,键对应要修改的字段,值对应要修改的值,第三个参数传入要插入的表对应的类的class。注意此方法先query查询条件,如果有查到对应的数据,则执行修改操作,未查到则执行新增操作。
remove():[移除数据],1、可直接传入要删除的对象,该方法会将传入的对象先匹配对应的class类获取表名称,再根据传入的对象的_id值匹配表中的_id的值,匹配到则直接删除,注意此处的_id为mongdb内置的_id字段,而非用户自定义的字段名称。2、还有重载方法,第一个参数传入query对象,第二个参数传入class类,与1方法区别在于传入查询的条件,可将条件匹配到的数据批量删除。
findAll(class c):[查找某张表的所有数据]只需传入表对应的class即可。
find():第一个参数为要传入的查询条件,第二个参数传入表对应的class类。
findOne(Query query, Class entityClass):第一个参数为要传入的查询条件,第二个参数传入表对应的class类,注意与find()的区别在于无论根据条件能查出多少条,都只会返回第一条,除非查不到数据。

5、复杂查询

如若涉及到更复杂的聚合查询,则需要使用到mongoTemplate.aggregate()。传入Aggregation实例化对象,该对象可整合多条Criteria查询条件。

// 聚合,返回结果
Aggregation aggregation = Aggregation.newAggregation(matchOrg,lookup, unwind,match,Aggregation.count().as("countNum"));

需要注意的是传入的Criteria条件是依次执行的,顺序不可以传错。如出现数据结果错误,可将查询语句打印出在mongodb中执行查看结果。

AggregationResults<CountVo> mongoResults = mongoTemplate.aggregate(aggregation, "Device", Count.class);
List<CountVo> mappedResults = mongoResults.getMappedResults();

mongoResults 即为要查询的结果集,List的泛型为结果集中的数据字段需一一对应才能封装入对象中。

能力有限,如有错,请指出,多多包涵。