Spring Data MongoDB 快速指南
目录
项目 | 版本 |
---|---|
Spring Boot | 2.2.5 |
Java | 1.8 |
Gradle | 6.2.2 |
MongoDB 善于存储,面对的是百万级甚至千万级的数据。
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
import com.mongodb.client.MongoCollection;
import com.mongodb.client.result.DeleteResult;
import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
import java.util.Collection;
import java.util.List;
/**
* @ClassName MongoDBClient
* @Desc TODO MongoDB 工具类
* @Version 1.0
*/
@Component
public class MongoDBClient {
@Autowired
private MongoTemplate mongoTemplate;
/*
* @ClassName MongoDBClient
* @Desc TODO 创建集合,并返回是否创建成功 -2:已存在 / -1:创建失败 / 1:创建成功
* @Version 1.0
*/
public Integer createCollection(String collectionName){
// 先判断集合是否存在
if(mongoTemplate.collectionExists(collectionName)){
return -2;
}else{
// 创建一个集合
mongoTemplate.createCollection(collectionName);
// 判断集合是否存在
if(mongoTemplate.collectionExists(collectionName)){
return 1;
}else{
return -1;
}
}
}
/*
* @ClassName MongoDBClient
* @Desc TODO 在指定集合中添加数据
* @Version 1.0
*/
public void add(Collection<?> batchToSave , String collectionName){
mongoTemplate.insert(batchToSave,collectionName);
}
/*
* @ClassName MongoDBClient
* @Desc TODO 根据条件和指定集合删除数据
* @Version 1.0
*/
public void delete(Query query , Object obj , String collectionName){
mongoTemplate.remove(query, obj.getClass(), collectionName);
}
/*
* @ClassName MongoDBClient
* @Desc TODO 根据条件更新数据
* @Version 1.0
*/
public void update(Query query , Update update , Object obj , String collectionName){
mongoTemplate.updateMulti(query , update , obj.getClass() , collectionName);
}
/*
* @ClassName MongoDBClient
* @Desc TODO 获取指定集合下的全部数据
* @Version 1.0
*/
public List<?> getAllByCollectionName(Object obj , String collectionName){
return mongoTemplate.findAll(obj.getClass(),collectionName);
}
/*
* @ClassName MongoDBClient
* @Desc TODO 根据条件和集合名称查询数据
* @Version 1.0
*/
public List<?> getByConditionAndCollectionName(Query query , Object obj , String collectionName){
return mongoTemplate.find(query, obj.getClass() , collectionName);
}
}