• Mongodb学习笔记--使用java连接操作mongodb


    添加依赖:

    <dependency>
                <groupId>org.mongodb</groupId>
                <artifactId>mongodb-driver</artifactId>
                <version>3.11.2</version>
                <scope>compile</scope>
            </dependency>
    package com.xiazhi.mongodb.util;
    
    import com.mongodb.MongoClient;
    import com.mongodb.MongoClientOptions;
    import com.mongodb.WriteConcern;
    import com.mongodb.client.MongoCollection;
    import com.mongodb.client.MongoCursor;
    import com.mongodb.client.MongoDatabase;
    import com.mongodb.client.MongoIterable;
    import com.mongodb.client.model.Filters;
    import org.bson.Document;
    import org.bson.conversions.Bson;
    import org.bson.types.ObjectId;
    import org.springframework.util.Assert;
    import org.springframework.util.StringUtils;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    import java.util.function.Consumer;
    
    
    /**
     * @author ZhaoShuai
     * @date Create in 2020/5/6
     **/
    public enum MongoUtil {
    
        /**
         * 此类的一个实例
         */
        instance;
    
        private static MongoClient mongoClient;
    
        static {
            System.out.println("***********MongodbUtil初始化***************");
            String host = "192.168.226.130";
            int port = 27017;
            mongoClient = new MongoClient(host, port);
            MongoClientOptions.Builder builder = new MongoClientOptions.Builder();
            builder.cursorFinalizerEnabled(true);
            builder.connectionsPerHost(300);
            builder.connectTimeout(30000);
            builder.maxWaitTime(5000);
            builder.socketTimeout(0);
            builder.threadsAllowedToBlockForConnectionMultiplier(5000);
            builder.build();
        }
    
        /**
         * 获取数据库
         * @param dbName
         * @return
         */
        public MongoDatabase getDatabase(String dbName) {
            Assert.hasText(dbName, "dbName con not be null");
            return mongoClient.getDatabase(dbName);
        }
    
        /**
         * 获取collections
         * @param database 数据库名
         * @param collection 表名
         * @return 表数据信息
         */
        public MongoCollection<Document> getCollection(String database,String collection) {
            MongoDatabase mongoDatabase = getDatabase(database);
    
            Assert.hasText(collection, "collection name can not be null");
            return mongoDatabase.getCollection(collection);
        }
    
        /**
         * 获取所有collection的名字
         * @param database 数据库名
         * @return 表名
         */
        public List<String> getCollectionsName(String database) {
            MongoDatabase mongoDatabase = getDatabase(database);
            MongoIterable<String> collectionNames = mongoDatabase.listCollectionNames();
    
            List<String> list = new ArrayList<>();
            for (String next : collectionNames) {
                list.add(next);
            }
    
            return list;
        }
    
        /**
         * 获取所有数据库名
         * @return 所有数据库名
         */
        public List<String> getDatabaseNames() {
            MongoIterable<String> databaseNames = mongoClient.listDatabaseNames();
    
            List<String> list = new ArrayList<>();
            for (String databaseName : databaseNames) {
                list.add(databaseName);
            }
    
            return list;
        }
    
        /**
         * 插入一条数据
         * @param db
         * @param coll
         * @param document
         */
        public void insert(String db, String coll, Document document) {
            MongoCollection<Document> collection = getCollection(db, coll);
            Assert.notNull(document, "插入数据不能为空");
            collection.insertOne(document);
        }
    
        /**
         * 根据主键查找
         * @param db
         * @param coll
         * @param id
         * @return
         */
        public Document findById(String db, String coll, String id) {
            MongoCollection<Document> collection = getCollection(db, coll);
            return findById(collection, id);
        }
    
        /**
         * 根据主键查找
         * @param collection
         * @param id
         * @return
         */
        public Document findById(MongoCollection<Document> collection, String id) {
            Assert.notNull(id, "id can not be null");
            ObjectId objectId = new ObjectId(id);
            return collection.find(Filters.eq("_id", objectId)).first();
        }
    
        /**
         * 条件查询
         * @param coll
         * @param filter
         * @return
         */
        public MongoCursor<Document> findByCondition(MongoCollection<Document> coll, Bson filter) {
            return coll.find(filter).cursor();
        }
    
    
    }
    package com.xiazhi.mongodb;
    
    import com.mongodb.client.FindIterable;
    import com.mongodb.client.MongoCollection;
    import com.mongodb.client.MongoCursor;
    import com.mongodb.client.MongoDatabase;
    import com.mongodb.client.model.Filters;
    import com.xiazhi.mongodb.util.MongoUtil;
    import org.bson.BsonDocument;
    import org.bson.BsonString;
    import org.bson.BsonValue;
    import org.bson.Document;
    import org.bson.conversions.Bson;
    import org.junit.jupiter.api.Test;
    import org.springframework.boot.test.context.SpringBootTest;
    
    import java.awt.*;
    
    @SpringBootTest
    class MongodbApplicationTests {
    
        @Test
        void contextLoads() {
            MongoDatabase test = MongoUtil.instance.getDatabase("test");
            System.out.println(test);
    
            MongoCollection<Document> collections = MongoUtil.instance.getCollection("test", "coll");
            FindIterable<Document> documents = collections.find();
            for (Document document : documents) {
                System.out.println(document);
            }
    
            Document document = MongoUtil.instance.findById(collections, "5eb230a80a6d7da784ff2c83");
            System.out.println(document);
    
            Document insert = new Document();
            insert.put("name", "lisi");
            insert.put("age", 18);
    
            MongoUtil.instance.insert("test", "coll", insert);
    
            BsonDocument filter = new BsonDocument();
            filter.put("name", new BsonString("lisi"));
            MongoCursor<Document> cursor = MongoUtil.instance.findByCondition(collections, filter);
            while (cursor.hasNext()) {
                Document next = cursor.next();
                System.out.println(next);
            }
    
        }
    
    }
  • 相关阅读:
    StatusStrip控件中元素右对齐方法两则
    在EF4.0中获取ObjectContext的数据库连接字符串
    通过反射调用泛型参数方法
    阻止保存要求重新创建表的更改
    [转]表达式解析的全部源码
    让ADO.NET SelfTracking Entity Generator产生的实体类支持RejectChanges()方法
    关于XtraGrid的CustomUnboundColumnData事件的触发条件
    WCF远程服务器强制关闭了一个连接
    让Sandcastle Help File Builder支持VS2010
    ==Entity Framework DBContext 增删改查深度解析
  • 原文地址:https://www.cnblogs.com/Zs-book1/p/12837818.html
Copyright © 2020-2023  润新知