一、引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
二、使用
配置
#mongo配置
spring:
data:
mongodb:
database: data_env #使用的db
uri: mongodb://账号:密码@IP:端口
Bean准备
@Data
@Document(collection = "wind_data")
public class DataSaveBean {
//@Id 不指定id会自动生成id
private String id;
private String content;
}
CRUD
/**
* Author:daWang
* Date:2023/11/30 18:12
*/
@SpringBootTest(classes = CrmzfApiApplication.class)
@RunWith(SpringRunner.class)
public class MongoTest {
@Autowired
MongoTemplate mongoTemplate;
//添加
public void save() {
DataSaveBean dataSaveBean = new DataSaveBean();
mongoTemplate.save(dataSaveBean);
}
//修改
public void update() {
Query query = Query.query(Criteria.where("_id").is("65693825fdbefa73b8feb11f"));
Update update = Update.update("content", "test");
// 更新单数据
mongoTemplate.updateFirst(query, update, DataSaveBean.class);
mongoTemplate.updateFirst(query, update, "wind_data");
mongoTemplate.updateFirst(query, update, DataSaveBean.class, "wind_data");
// 更新多数据
mongoTemplate.updateMulti(query, update, DataSaveBean.class);
mongoTemplate.updateMulti(query, update, "wind_data");
mongoTemplate.updateMulti(query, update, DataSaveBean.class, "wind_data");
// 更新数据,如果数据不存在就新增
mongoTemplate.upsert(query, update, DataSaveBean.class);
mongoTemplate.upsert(query, update, "wind_data");
}
//删除
public void delete() {
List<DataSaveBean> list = new ArrayList<>();
DataSaveBean dataSaveBean = new DataSaveBean();
dataSaveBean.setId("65693825fdbefa73b8feb11f");
list.add(dataSaveBean);
Query query = Query.query(Criteria.where("_id").in("65693825fdbefa73b8feb11f", "65693825fdbefa73b8feb118"));
//根据条件删除多个数据与sql类似
mongoTemplate.remove(query);
mongoTemplate.remove(dataSaveBean);//根据对象的id进行删除
/**
* 这行代码的作用是删除指定类型(在这里是DataSaveBean.class)的所有文档。它会删除集合(MongoDB中的表)中所有符合给定类型的文档,但不会删除整个数据库。
* 具体而言,这行代码会删除与DataSaveBean.class关联的MongoDB集合中的所有文档。如果该集合是唯一与这个类型关联的集合,那么这行代码会删除整个集合中的所有文档。如果这个集合与多个类型关联,它只会删除与DataSaveBean.class关联的文档。
*/
mongoTemplate.remove(DataSaveBean.class);
// 根据条件删除(可删除多条),指定集合
mongoTemplate.remove(query, DataSaveBean.class, "wind_data");
}
//单个查询
public void queryById() {
DataSaveBean byId = mongoTemplate.findById("65693825fdbefa73b8feb11f", DataSaveBean.class);
}
}
查询
//分页查询
@Test
public void pageQuery() {
//需要计算偏移量
Pageable pageable = PageRequest.of(1 - 1, 20, Sort.by(Sort.Order.desc("_id")));
//相当于where条件
Criteria criteria = new Criteria("content").is("test");
Query query = new Query(criteria).with(pageable);
List<DataSaveBean> beans = mongoTemplate.find(query, DataSaveBean.class);
System.out.println(JSONUtil.toJsonStr(beans));
}