mongoutil,esutil

本文将深入探讨MongoUtil和ESUtil这两个工具库,详细介绍它们在数据操作和管理中的应用,包括如何使用MongoUtil进行高效MongoDB数据操作,以及如何利用ESUtil优化Elasticsearch的数据处理流程。
摘要由CSDN通过智能技术生成
package com.logapi.monitor.common.util;

import com.logapi.monitor.common.pojo.PageParam;
import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.client.*;
import com.mongodb.client.model.Sorts;
import com.sun.org.apache.bcel.internal.generic.NEW;
import org.bson.Document;
import org.bson.conversions.Bson;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.convert.MongoConverter;
import org.springframework.stereotype.Component;

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

@Component
public class MongoUtil {



    @Autowired
    private MongoClient mongoClient;

    @Autowired
    private MongoConverter mongoConverter;

    /**
     * 获取database
     *
     * @return
     * @paramdbName
     */
    public MongoDatabase getDB(String dbName) {
        if (dbName != null && !"".equals(dbName)) {
            MongoDatabase database = mongoClient.getDatabase(dbName);
            return database;
        }
        return null;
    }

    /**
    * @author: ganchao
    * @description: 单条数据插入
    * @date: 2019/9/2 8:43
    * @param: [dbName, collectionName, document]
    * @return: void
    */
    public void insert(String dbName, String collectionName,Document document){
        MongoCollection<Document> collection = getDB(dbName).getCollection(collectionName);
        collection.insertOne(document);
    }

    /**
    * @author: ganchao
    * @description: list数据插入
    * @date: 2019/9/2 8:43
    * @param: [dbName, collectionName, documents]
    * @return: void
    */
    public void insertList(String dbName, String collectionName,List<Document> documents){
        MongoCollection<Document> collection = getDB(dbName).getCollection(collectionName);
        collection.insertMany(documents);
    }

    /**    
    * @author: ganchao 
    * @description: 删除单条数据
    * @date: 2019/9/2 8:49  
    * @param: [dbName, collectionName, basicDBObject]  
    * @return: void  
    */
    public void deleteOne(String dbName, String collectionName,Bson basicDBObject){
        MongoCollection<Document> collection = getDB(dbName).getCollection(collectionName);
        //collection.findOneAndDelete(basicDBObject); //删除一条
        collection.deleteOne(basicDBObject);
    }

    /**
    * @author: ganchao
    * @description: 删除多条数据
    * @date: 2019/9/2 8:50
    * @param: [dbName, collectionName, basicDBObject]
    * @return: void
    */
    public void deleteMany(String dbName, String collectionName,Bson basicDBObject){
        MongoCollection<Document> collection = getDB(dbName).getCollection(collectionName);
        collection.deleteMany(basicDBObject);
    }

    /**
    * @author: ganchao
    * @description: 更新单条数据
    * @date: 2019/9/2 8:50
    * @param: [dbName, collectionName, query, updateObject]
    * @return: void
    */
    public void update(String dbName, String collectionName,BasicDBObject query,Bson updateObject){
        MongoCollection<Document> collection = getDB(dbName).getCollection(collectionName);
        //更新一条数据
        collection.updateOne(query,updateObject);

    }

    /**
    * @author: ganchao
    * @description: 更新多条数据
    * @date: 2019/9/2 8:50
    * @param: [dbName, collectionName, query, updateObject]
    * @return: void
    */
    public void updateMany(String dbName, String collectionName,BasicDBObject query,Bson updateObject){
        MongoCollection<Document> collection = getDB(dbName).getCollection(collectionName);
        //更新多条数据
        collection.updateMany(query, updateObject);
    }

    /**
     * 条件查询记录数量
     *
     * @return
     * @paramcollection
     * @paramfilter
     */
    public Long count(String dbName, String collectionName, BasicDBObject query) {
        Long count = 0L;
        if (query == null) {
            query = new BasicDBObject();
        }
        if (null == collectionName || "".equals(collectionName)) {
            return null;
        }
        if (null == dbName || "".equals(dbName)) {
            return null;
        }
        MongoDatabase database = getDB(dbName);
        if (database != null) {
            MongoCollection<Document> collection = database.getCollection(collectionName);
            try {
                //构建查询条件
                count = collection.count(query);
            } finally {
            }
        } else {
            return null;
        }

        return count;
    }

    /**
     * 条件查询
     *
     * @return
     * @paramcollection
     * @paramfilter
     */
    public <T> List<T> find(String dbName, String collectionName, Class<T> clazz, BasicDBObject query, Bson sort, PageParam page, String[] fields) {
        if (query == null) {
            query = new BasicDBObject();
        }
        List<T> list = new ArrayList<T>();
        MongoCursor<Document> cursor = null;
        if (null == collectionName || "".equals(collectionName)) {
            return null;
        }
        if (null == dbName || "".equals(dbName)) {
            return null;
        }
        MongoDatabase database = getDB(dbName);
        if (database != null) {
            MongoCollection<Document> collection = database.getCollection(collectionName);
            try {
                //构建查询条件
                FindIterable<Document> iterable = collection.find(query);
                iterable = addField(iterable,fields);
                iterable = addSort(iterable,sort);
                iterable = addPageInfo(iterable,page);
                cursor = iterable.iterator();
                while (cursor.hasNext()) {
                    Document document = cursor.next();
                    T t = mongoConverter.read(clazz, document);
                    list.add(t);
                }
            } finally {
                if (cursor != null) {
                    cursor.close();
                }

            }
        } else {
            return null;
        }

        return list;
    }

    private FindIterable<Document> addField(FindIterable<Document> document, String[] fields) {
        if (fields == null || fields.length <= 0) {
            return document;
        }
        BasicDBObject basicDBObject = new BasicDBObject();
        for (String field : fields) {
            basicDBObject.append(field, 1);
        }
        return document.projection(basicDBObjec
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值