Java(99):Java操作Mongo数据库增删改查工具类MongoDBUtil

Java操作Mongo数据库增删改查工具类MongoDBUtil

1.Maven引用

 <!-- https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver -->
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
            <version>3.12.11</version>
        </dependency>

数据配置文件db-java.properties

# mongo
MONGO_SERVER=10.1.1.196:27017
MONGO_PROXY=10.1.1.74:29019
MONGO_DB=aoe_mongo
MONGO_USER=hmf
MONGO_SECRET=lianshi
MONGO_COLL=autotest

3.Java调用Mongo工具类

3.2连接数据库

public MongoDBUtils(){
        String configFile="db-java.properties";
        PropertiesUtil pro= new PropertiesUtil(configFile);
        mongoServer = pro.readProperty("MONGO_SERVER");
        dbName = pro.readProperty("MONGO_DB");
        dbUser = pro.readProperty("MONGO_USER");
        dbSecret = pro.readProperty("MONGO_SECRET");
        coll = pro.readProperty("MONGO_COLL");
    }

    /**
     * 连接Mongo数据库
     */
    public  void MongoConnect(){
        MongoConnect(null);
    }

    /**
     * 连接Mongo数据库代理
     //* @param aoeString 如果输入非空,那么是连接proxy
     */
    public  void  MongoConnect(String aoeString){
        List<ServerAddress> addressList=new ArrayList<>();
        ServerAddress address = new ServerAddress(mongoServer);
  /*      if (aoeString !=null) {
            address = new ServerAddress(aoeServer);
        }*/
        addressList.add(address);

        MongoCredential credential=MongoCredential.createCredential(dbUser, dbName, dbSecret.toCharArray());
        mongoClient = MongoClients.create(
                MongoClientSettings.builder()
                        .applyToClusterSettings(builder -> builder.hosts(addressList))
                        .credential(credential)
                        .build());
        log.info("Connect to database successfully,mongoDatabase:"+dbName );

    }

3.2、插入数据

    /**
     * 插入文档数据
     * @param column_aa 字段
     * @param value_aa 值
     */
    public void insert(String[] column_aa, String[] value_aa){
        MongoDatabase mongoDb=mongoClient.getDatabase(dbName);
        MongoCollection<Document> dbColl= mongoDb.getCollection(coll);
        Document document = new Document();
        for(int i=0;i<column_aa.length;i++){
            if(column_aa.length == value_aa.length){
                document.append(column_aa[i], value_aa[i]);
            }
        }
        dbColl.insertOne(document);
        log.info("插入文档: "+document);
    }

3.3、按条件查询文档

   /**
     * 按条件查询文档数据
     * @param name  字段
     * @param value  值
     */
    public void FilterQuery(String name,String value){
        boolean flag=false;
        MongoDatabase mongoDb=mongoClient.getDatabase(dbName);
        MongoCollection<Document> dbColl= mongoDb.getCollection(coll);
        //过滤器
        Bson regex = Filters.regex(name,value);
        //Bson regex = Filters.eq(name,value);   //eq是直接匹配,regex是正则匹配(^代表匹配开头,&代表匹配末尾)
        FindIterable<Document> find = dbColl.find(regex);
        for (Document document : find) {
            log.info("FilterQuery查询结果: "+document);
        }
    }

3.4、查询所有文档

   /**
     * 查询所有文档数据
     */
    public List<AoeData> query(){
        MongoDatabase mongoDb=mongoClient.getDatabase(dbName);
        MongoCollection<Document> dbColl= mongoDb.getCollection(coll);
        List<AoeData>  datalist=new ArrayList<>();
        AoeData data=new AoeData();
        MongoCursor<Document> mongoCursor = dbColl.find().iterator();
        if(mongoCursor.hasNext()){
            Document doc =mongoCursor.next();
            log.info("查询文档: "+doc);
            data.setAoeId(Integer.parseInt(doc.getString("aoeId")));
            data.setAoeAes(doc.getString("aoeAes"));
            data.setAoeSm4(doc.getString("aoeSm4"));
            data.setAoeSm4_a(doc.getString("aoeSm4_a"));
            data.setAoeEmail(doc.getString("aoeEmail"));
            data.setAoePhone(doc.getString("aoePhone"));
            data.setAoeIdCard(doc.getString("aoeIdCard"));
            data.setAoeOfficerCard(doc.getString("aoeOfficerCard"));
            data.setAoePassport(doc.getString("aoePassport"));
            data.setAoeGeneralIdCard(doc.getString("aoeGeneralIdCard"));
            data.setAoeCreditCard(doc.getString("aoeCreditCard"));
            data.setAoePosition(doc.getString("aoePosition"));
            datalist.add(data);
        }
        return datalist;
    }

3.5、按条件删除文档

    /**
     * 删除文档数据
     * @param name  字段
     * @param value  值
     */
    public void removeData(String name,String value) {
        MongoDatabase mongoDb=mongoClient.getDatabase(dbName);
        MongoCollection<Document> dbColl= mongoDb.getCollection(coll);
        //dbColl.deleteMany(Filters.eq("aoeAes", "吴秀梅"));
        DeleteResult deleteResult=dbColl.deleteMany(Filters.regex(name, value));
        log.info("删除文档结果: "+deleteResult);
        if(deleteResult.getDeletedCount()>0){
            log.info("删除文档成功,删除数量:"+deleteResult.getDeletedCount());
        }
    }

3.6、按条件更新文档

    /**
     * 更新文档数据
     * @param name  字段
     * @param value  值
     */
    public void updateData(String name,String value,String name2,String updateValue) {
        MongoDatabase mongoDb=mongoClient.getDatabase(dbName);
        MongoCollection<Document> dbColl= mongoDb.getCollection(coll);
        //过滤器
        Bson filter = Filters.eq(name,value);   //eq是直接匹配,regex是正则匹配(^代表匹配开头,&代表匹配末尾)
        //指定修改的更新文档
        Document document = new Document("$set", new Document(name2, updateValue));
        dbColl.updateOne(filter,document);
    }

3.7关闭连接对象

    /**
     * 关闭连接对象
     */
    public  void close(){
        if(mongoClient != null){
            mongoClient.close();
        }
        mongoClient = null;
    }

3.9、整体工具类:

package mongo;


import bean.AoeData;
import com.mongodb.MongoClientSettings;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.*;
import com.mongodb.client.model.Filters;
import com.mongodb.client.result.DeleteResult;
import org.bson.Document;
import org.bson.conversions.Bson;
import org.elasticsearch.action.delete.DeleteRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import utils.MongoDBUtil;
import utils.PropertiesUtil;

import java.util.ArrayList;
import java.util.List;

/**
 * @author : HMF
 * @Description :
 * @Date : Created in 15:14 2022/9/26
 */
public class MongoDBUtils {

    protected static Logger log = LoggerFactory.getLogger(MongoDBUtils.class);

    private  String mongoServer;
    private  String aoeServer;
    private  String dbName;
    private  String dbUser;
    private  String dbSecret;
    public   String coll;

    private static MongoClient mongoClient;

    public MongoDBUtils(){
        String configFile="db-java.properties";
        PropertiesUtil pro= new PropertiesUtil(configFile);
        mongoServer = pro.readProperty("MONGO_SERVER");
        dbName = pro.readProperty("MONGO_DB");
        dbUser = pro.readProperty("MONGO_USER");
        dbSecret = pro.readProperty("MONGO_SECRET");
        coll = pro.readProperty("MONGO_COLL");
    }

    /**
     * 连接Mongo数据库
     */
    public  void MongoConnect(){
        MongoConnect(null);
    }

    /**
     * 连接Mongo数据库代理
     //* @param aoeString 如果输入非空,那么是连接proxy
     */
    public  void  MongoConnect(String aoeString){
        List<ServerAddress> addressList=new ArrayList<>();
        ServerAddress address = new ServerAddress(mongoServer);
  /*      if (aoeString !=null) {
            address = new ServerAddress(aoeServer);
        }*/
        addressList.add(address);

        MongoCredential credential=MongoCredential.createCredential(dbUser, dbName, dbSecret.toCharArray());
        mongoClient = MongoClients.create(
                MongoClientSettings.builder()
                        .applyToClusterSettings(builder -> builder.hosts(addressList))
                        .credential(credential)
                        .build());
        log.info("Connect to database successfully,mongoDatabase:"+dbName );

    }

    /**
     * 插入文档数据
     * @param column_aa 字段
     * @param value_aa 值
     */
    public void insert(String[] column_aa, String[] value_aa){
        MongoDatabase mongoDb=mongoClient.getDatabase(dbName);
        MongoCollection<Document> dbColl= mongoDb.getCollection(coll);
        Document document = new Document();
        for(int i=0;i<column_aa.length;i++){
            if(column_aa.length == value_aa.length){
                document.append(column_aa[i], value_aa[i]);
            }
        }
        dbColl.insertOne(document);
        log.info("插入文档: "+document);
    }

    /**
     * 查询所有文档数据
     */
    public List<AoeData> query(){
        MongoDatabase mongoDb=mongoClient.getDatabase(dbName);
        MongoCollection<Document> dbColl= mongoDb.getCollection(coll);
        List<AoeData>  datalist=new ArrayList<>();
        AoeData data=new AoeData();
        MongoCursor<Document> mongoCursor = dbColl.find().iterator();
        if(mongoCursor.hasNext()){
            Document doc =mongoCursor.next();
            log.info("查询文档: "+doc);
            data.setAoeId(Integer.parseInt(doc.getString("aoeId")));
            data.setAoeAes(doc.getString("aoeAes"));
            data.setAoeSm4(doc.getString("aoeSm4"));
            data.setAoeSm4_a(doc.getString("aoeSm4_a"));
            data.setAoeEmail(doc.getString("aoeEmail"));
            data.setAoePhone(doc.getString("aoePhone"));
            data.setAoeIdCard(doc.getString("aoeIdCard"));
            data.setAoeOfficerCard(doc.getString("aoeOfficerCard"));
            data.setAoePassport(doc.getString("aoePassport"));
            data.setAoeGeneralIdCard(doc.getString("aoeGeneralIdCard"));
            data.setAoeCreditCard(doc.getString("aoeCreditCard"));
            data.setAoePosition(doc.getString("aoePosition"));
            datalist.add(data);
        }
        return datalist;
    }


    /**
     * 按条件查询文档数据
     * @param name  字段
     * @param value  值
     */
    public void FilterQuery(String name,String value){
        boolean flag=false;
        MongoDatabase mongoDb=mongoClient.getDatabase(dbName);
        MongoCollection<Document> dbColl= mongoDb.getCollection(coll);
        //过滤器
        Bson regex = Filters.regex(name,value);
        //Bson regex = Filters.eq(name,value);   //eq是直接匹配,regex是正则匹配(^代表匹配开头,&代表匹配末尾)
        FindIterable<Document> find = dbColl.find(regex);
        for (Document document : find) {
            log.info("FilterQuery查询结果: "+document);
        }
    }


    /**
     * 删除文档数据
     * @param name  字段
     * @param value  值
     */
    public void removeData(String name,String value) {
        MongoDatabase mongoDb=mongoClient.getDatabase(dbName);
        MongoCollection<Document> dbColl= mongoDb.getCollection(coll);
        //dbColl.deleteMany(Filters.eq("aoeAes", "吴秀梅"));
        DeleteResult deleteResult=dbColl.deleteMany(Filters.regex(name, value));
        log.info("删除文档结果: "+deleteResult);
        if(deleteResult.getDeletedCount()>0){
            log.info("删除文档成功,删除数量:"+deleteResult.getDeletedCount());
        }
    }

    /**
     * 更新文档数据
     * @param name  字段
     * @param value  值
     */
    public void updateData(String name,String value,String name2,String updateValue) {
        MongoDatabase mongoDb=mongoClient.getDatabase(dbName);
        MongoCollection<Document> dbColl= mongoDb.getCollection(coll);
        //过滤器
        Bson filter = Filters.eq(name,value);   //eq是直接匹配,regex是正则匹配(^代表匹配开头,&代表匹配末尾)
        //指定修改的更新文档
        Document document = new Document("$set", new Document(name2, updateValue));
        dbColl.updateOne(filter,document);
    }


    /**
     * 关闭连接对象
     */
    public  void close(){
        if(mongoClient != null){
            mongoClient.close();
        }
        mongoClient = null;
    }


}

4.调用和执行结果

    public static void main(String[] args){

        MongoDBUtils mdb = new MongoDBUtils();
        mdb.MongoConnect();
        //mdb.MongoConnect();
        //字段名和字段值
        String column = "aoeId,aoeAes,aoeSm4,aoeSm4_a,aoeEmail,aoePhone,aoeIdCard,aoeOfficerCard,aoePassport,aoeGeneralIdCard,aoeCreditCard,aoePosition";
        String value="1,吴秀梅,Beijing Refining Network Technology Co.Ltd.,海淀区,qianxiulan@yahoo.com,15652996964,210302199608124861,武水电字第3632734号,BWP018930705,0299233902,6212262502009182455,测试数据";
        //解析字段名
        String[] column_aa = column.split(",");
        //解析值
        String[] value_aa = value.split(",");

        mdb.removeData("aoeAes","吴秀梅");
        //插入查询删除文档
        mdb.insert(column_aa, value_aa);
        //mdb.query();
        mdb.FilterQuery("aoeAes","吴秀梅");
        mdb.updateData("aoeAes","吴秀梅","aoeEmail","update001@yahoo.com");
        mdb.query();
        //插入查询删除文档
        mdb.close();

    }

执行结果:

Java操作MongoDB详解

https://blog.csdn.net/m0_37583655/article/details/123827112

如果查询返回值需要放入bean中,参考

package bean;

import java.io.Serializable;

/**
 * ClassName AoeData
 * description TODO
 *
 * @author : HMF
 * date: 2022/5/24 16:28
 **/


public class AoeData implements Serializable {

    private static final long serialVersionUID = -8813563931766174208L;
    private int aoeId; //aoeId
    private String aoeAes; //aoeAes
    private String aoeSm4; //aoeSm4
    private String aoeSm4_a; //aoeSm4_a
    private String aoeEmail; //aoeEmail
    private String aoePhone; //aoePhone
    private String aoeIdCard; //aoeIdCard
    private String aoeOfficerCard; //aoeOfficerCard
    private String aoePassport; //aoePassport
    private String aoeGeneralIdCard; //aoeGeneralIdCard
    private String aoePosition;//aoePosition
    private String aoeCreditCard; //aoeCreditCard

    public int getAoeId() {
        return aoeId;
    }

    public void setAoeId(int aoeId) {
        this.aoeId = aoeId;
    }

    public String getAoeAes() {
        return aoeAes;
    }

    public void setAoeAes(String aoeAes) {
        this.aoeAes = aoeAes;
    }

    public String getAoeSm4() {
        return aoeSm4;
    }

    public void setAoeSm4(String aoeSm4) {
        this.aoeSm4 = aoeSm4;
    }

    public String getAoeSm4_a() {
        return aoeSm4_a;
    }

    public void setAoeSm4_a(String aoeSm4_a) {
        this.aoeSm4_a = aoeSm4_a;
    }

    public String getAoeEmail() {
        return aoeEmail;
    }

    public void setAoeEmail(String aoeEmail) {
        this.aoeEmail = aoeEmail;
    }

    public String getAoePhone() {
        return aoePhone;
    }

    public void setAoePhone(String aoePhone) {
        this.aoePhone = aoePhone;
    }

    public String getAoeIdCard() {
        return aoeIdCard;
    }

    public void setAoeIdCard(String aoeIdCard) {
        this.aoeIdCard = aoeIdCard;
    }

    public String getAoeOfficerCard() {
        return aoeOfficerCard;
    }

    public void setAoeOfficerCard(String aoeOfficerCard) {
        this.aoeOfficerCard = aoeOfficerCard;
    }

    public String getAoePassport() {
        return aoePassport;
    }

    public void setAoePassport(String aoePassport) {
        this.aoePassport = aoePassport;
    }

    public String getAoeGeneralIdCard() {
        return aoeGeneralIdCard;
    }

    public void setAoeGeneralIdCard(String aoeGeneralIdCard) {
        this.aoeGeneralIdCard = aoeGeneralIdCard;
    }

    public String getAoePosition() {
        return aoePosition;
    }

    public void setAoePosition(String aoePosition) {
        this.aoePosition = aoePosition;
    }

    public String getAoeCreditCard() {
        return aoeCreditCard;
    }

    public void setAoeCreditCard(String aoeCreditCard) {
        this.aoeCreditCard = aoeCreditCard;
    }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁宁可可

您的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值