目录

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

SpringBoot整合MongoDB