Common Tools (17)--MongoClient Tool Class

import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import org.apache.commons.lang3.StringUtils;
import org.bson.BsonDocument;
import org.bson.Document;

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

public class MongoClientTest {
    
    
    private static MongoClient mongoClient = null;

    /**
     * @desc 获得MongoClient
     * @param host
     * @param port
     * @return MongoClient instance
     */
    private static MongoClient getMongoClinet(String host, Integer port) {
    
    
        if (mongoClient==null) {
    
    
            if (StringUtils.isEmpty(host) || port == null) {
    
    
                mongoClient = new MongoClient("localhost", 27017);
            } else {
    
    
                mongoClient = new MongoClient(host, port);
            }
        }
        return mongoClient;
    }

    public static void main(String[] args) {
    
    
        MongoClientTest mongoTest = new MongoClientTest();
        MongoCollection coll = mongoTest.getCollection("localhost",27017,"local","test");
        mongoTest.insertOneDoc(coll);
        mongoTest.inserManyDoc(coll);
        mongoTest.updateDoc(coll);
        mongoTest.deleteDoc(coll);
        mongoTest.queryDocs(coll);
        mongoTest.queryByName(coll);
        mongoTest.queryProjection(coll);
        mongoTest.queryGroupBy(coll);
        mongoTest.queryPaging(coll);
        mongoTest.close();
    }

    /**
     * @desc 获得指定名称mongo数据库
     * @param host
     * @param port
     * @param dbName
     * @return MongoDatabase
     */
    private MongoDatabase getMongoDB(String host, Integer port, String dbName) {
    
    
        MongoClient mongoClient = getMongoClinet(host, port);
        return mongoClient.getDatabase(dbName);
    }

    /**
     * @desc 获得指定名称集合
     * @param host
     * @param port
     * @param dbName
     * @param collectionName
     * @return MongoCollection
     */
    private MongoCollection<Document> getCollection(String host, Integer port, String dbName, String collectionName) {
    
    
        MongoDatabase mongDB = getMongoDB(host, port, dbName);
        return mongDB.getCollection(collectionName);
    }

    /**
     * @desc 插入单个文档
     * @param coll
     */
    private void insertOneDoc(MongoCollection<Document> coll) {
    
    
        Document doc = new Document();
        doc.append("name", "lisi");
        doc.append("age", 18);
        coll.insertOne(doc);
    }


    /**
     * @desc 插入多个文档
     * @param coll
     */
    private void inserManyDoc(MongoCollection<Document> coll) {
    
    
        Document doc = new Document();
        doc.append("name", "lisi");
        doc.append("age", 31);
        List list = new ArrayList<Document>();
        list.add(doc);
        Document doc2 = new Document();
        doc2.append("name", "wangwu");
        doc2.append("age",32);
        list.add(doc2);
        coll.insertMany(list);
    }

    /**
     * @desc 更新单个文档
     * @param coll
     */
    private void updateDoc(MongoCollection<Document> coll) {
    
    
        Document bson = Document.parse("{\"name\":\"zhangsan\"}");
        Document newBson = Document.parse("{\"name\":\"tianqi\",\"age\":1,\"other\":\"null\"}");
        coll.updateOne(Filters.eq("name", "zhangsan"), new Document(
                "$set", new Document("name", "tianqi"))
        );
    }

    /**
     * @desc 删除文档
     * @param coll
     */
    private void deleteDoc(MongoCollection<Document> coll) {
    
    
        coll.deleteOne(Filters.eq("name", "tianqi"));
    }

    /**
     * @desc 查询所有的文档
     * @param coll
     */
    private void queryDocs(MongoCollection<Document> coll) {
    
    
        MongoCursor<Document> documet = coll.find().iterator();
        while (documet.hasNext()){
    
    
            System.out.println(documet.next());
        }
    }

    /**
     * @desc 查询文档添加过滤条件
     * @param coll
     */
    private void queryByName(MongoCollection<Document> coll) {
    
    
        BsonDocument bson = BsonDocument.parse("{\"name\":\"wangwu\"}");
        BsonDocument bson2 = BsonDocument.parse("{\"age\":{$gte:10,$lte:20}}");
        MongoCursor<Document> documet = coll.find(bson2).iterator();
        while (documet.hasNext()){
    
    
            System.out.println(documet.next());
        }
    }

    /**
     * @desc 投影查询
     * @param coll
     */
    private void queryProjection(MongoCollection<Document> coll) {
    
    
        BsonDocument bson = BsonDocument.parse("{\"name\":\"wangwu\"}");
        Document doc = new Document();
        doc.append("name", 1);
        doc.append("age", 1);
        doc.append("_id", 0);
        MongoCursor<Document> documet = coll.find(bson).projection(doc).iterator();
        while (documet.hasNext()){
    
    
            System.out.println(documet.next());
        }
    }

    /**
     * @desc 分组查询
     * @param coll
     */
    private void queryGroupBy(MongoCollection<Document> coll) {
    
    
        List aggregateList = new LinkedList();
        Document doc = new Document();
        doc.append("$match", BasicDBObject.parse("{age:{ $gte:10, $lte:20}}"));
        aggregateList.add(doc);
        doc = new Document();
        doc.append("$group", BasicDBObject.parse("{_id:null, count:{ $sum:1}}"));
        aggregateList.add(doc);
        MongoCursor<Document> documet = coll.aggregate(aggregateList).iterator();
        while (documet.hasNext()){
    
    
            System.out.println(documet.next());
        }
    }

    /**
     * @desc 分页查询:每页显示3条数据,从第三页开始展示
     * @param coll
     */
    private void queryPaging(MongoCollection<Document> coll) {
    
    
        MongoCursor<Document> documet = coll.find().limit(3).skip(2*3).iterator();
        while (documet.hasNext()){
    
    
            System.out.println(documet.next());
        }
    }

    /**
     * @desc 关闭mongo客户端连接
     */
    private void close() {
    
    
        mongoClient.close();
    }
}

import com.mongodb.MongoClient;
import com.mongodb.ServerAddress;

import java.util.LinkedList;
import java.util.List;

/**
 * @Auther: wangjie
 * @Date: 2020/5/7 20:13
 * @Description:副本集客户端访问测试
 */
public class MongoClusterClientTest {
    
    
    private static MongoClient mongoClient =null;

    public static void main(String[] args) {
    
    
        MongoClusterClientTest clusterClientTest = new MongoClusterClientTest();
        MongoClient mongoClient = clusterClientTest.getMongoClient();
        System.out.println(mongoClient.getReplicaSetStatus());
    }

    /**
     * @desc 获得mongo副本集集群服务器客户端连接
     * @return MongoClient
     */
    private MongoClient getMongoClient() {
    
    
        List hosts = new LinkedList<ServerAddress>();
        hosts.add(new ServerAddress("node01",27017));
        hosts.add(new ServerAddress("node02",27017));
        hosts.add(new ServerAddress("node03",27017));
        if (mongoClient==null) {
    
    
            mongoClient = new MongoClient(hosts);
        }
        return mongoClient;
    }

    /**
     * @desc 关闭客户端连接
     */
    private void close() {
    
    
        mongoClient.close();
    }
}

Guess you like

Origin blog.csdn.net/qq_36382679/article/details/113175912