zoukankan      html  css  js  c++  java
  • Java 操作 MongoDB

    mongo-java-driver操作MongoDB

    1. 引入MongoDB依赖
    <dependency>
      <groupId>org.mongodb</groupId>
      <artifactId>mongo-java-driver</artifactId>
      <version>3.8.2</version>
    </dependency>
    
    1. 连接工具类
    import com.mongodb.MongoClient;
    import com.mongodb.MongoClientOptions;
    import com.mongodb.ServerAddress;
    import com.mongodb.client.MongoCollection;
    import com.mongodb.client.MongoDatabase;
    
    /**
     * 1.连接MongoDB数据库
     * 1.3池连方式
     */
    public class MongoDBPoolUtil {
    
        private static MongoClient client = null;
    
        static {
            if (client == null) {
                MongoClientOptions.Builder builder = new MongoClientOptions.Builder();
                //设置每个连接地址的最大连接数
                builder.connectionsPerHost(10);
                //设置连接的超时时间
                builder.connectTimeout(5000);
                //设置读写的超时时间
                builder.socketTimeout(5000);
                ServerAddress address = new ServerAddress("localhost", 27017);
                client = new MongoClient(address, builder.build());
            }
        }
    
        //获取MongoDB数据库
        public static MongoDatabase getDatabase(String databaseName) {
            return client.getDatabase(databaseName);
        }
    
        //获取Mongo集合
        public static MongoCollection getCollection(String databaseName, String collectionName) {
            return getDatabase(databaseName).getCollection(collectionName);
        }
    }
    
    1. Java代码演示
    import com.alibaba.fastjson.JSON;
    import com.example.demo.Demo.util01.MongoDBPoolUtil;
    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 org.bson.Document;
    import org.bson.types.ObjectId;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 目前使用的池连方式链接MongoDB服务器, 访问:http://localhost:27017/
     * It looks like you are trying to access MongoDB over HTTP on the native driver port.
     */
    public class Test01 {
        public static void main(String[] args) {
            // 2.操作集合
            // 2.1 创建集合
            /*MongoDatabase mapMongoDB = MongoDBPoolUtil.getDatabase("mapMongoDB");
            mapMongoDB.createCollection("macCode01");
            System.out.println("创建成功!");*/
    
            // 2.2 获取集合
            /*MongoCollection<Document> test = mapMongoDB.getCollection("macCode");
            System.out.println(test.getNamespace());*/
            // 输出:mapMongoDB.macCode
    
            // 2.3 删除集合
            /*MongoCollection<Document> dropTest = mapMongoDB.getCollection("macCode01");
            dropTest.drop();
            System.out.println("删除成功!");*/
    
    
            System.out.println("=====================Call Start=====================");
    
            // 调用3.1 单个文档插入
            /*insertSingleDocument();*/
    
            // 调用3.2 插入多个文档
            /*insertManyDocument();*/
    
            // 调用4.1 更新单个文档单个键
            /*updateSingleDocumentSingleKey();*/
    
            // 调用4.2 更新单个文档多个键
            /*updateSingleDocumentManyKey();*/
    
    
            // 调用5.1 查询所有文档
            /*searchAllDocument();*/
    
            // 调用5.2 根据ID检索文档
            searchDocumentById("mapMongoDB", "macCode");
    
    
        }
    
        // 3.插入文档
        // 3.1 单个文档插入
        private static void insertSingleDocument() {
            MongoCollection collection = MongoDBPoolUtil.getCollection("mapMongoDB", "macCode");
            Document document = new Document();
            document.append("UserName", "六个核桃").append("Age", 24).append("desc", "prefect");
            collection.insertOne(document);
            System.out.println("=====================添加单个文档成功!=====================");
        }
    
        // 3.2 插入多个文档
        private static void insertManyDocument() {
            MongoCollection collection = MongoDBPoolUtil.getCollection("mapMongoDB", "macCode");
            List<Document> list = new ArrayList<>();
            for (int i = 0; i < 5; i++) {
                Document document = new Document();
                document.append("UserName", "捕获第" + i + "只瑶瑶").append("Age", 18 + i).append("desc", "prefect" + i);
                list.add(document);
            }
            collection.insertMany(list);
            System.out.println("=====================插入多个文档成功!=====================");
        }
    
        // 4.更新文档
        // 4.1 更新单个文档单个键 更新单个文档单个key
        private static void updateSingleDocumentSingleKey() {
            MongoCollection collection = MongoDBPoolUtil.getCollection("mapMongoDB", "macCode");
            collection.updateOne(Filters.eq("UserName", "六个核桃"), new Document("$set", new Document("Age", 100)));
            System.out.println("=====================更新单个文档单个键成功!=====================");
        }
    
        // 4.2 更新单个文档多个键
        private static void updateSingleDocumentManyKey() {
            MongoCollection collection = MongoDBPoolUtil.getCollection("mapMongoDB", "macCode");
            collection.updateOne(Filters.eq("UserName", "六个核桃"),
                    new Document("$set", new Document("Age", 29).append("desc", "prefect5")));
            System.out.println("=====================更新单个文档多个键成功!=====================");
        }
    
    
        // 5.查询文档
        // 5.1 查询所有文档
        private static void searchAllDocument() {
            Integer sum = 0;
            MongoCollection collection = MongoDBPoolUtil.getCollection("mapMongoDB", "macCode");
            // 返回的是一个迭代器
            FindIterable<Document> iterable = collection.find();
            for (Document document : iterable) {
                sum++;
                System.out.println(JSON.toJSON(document));
    //            System.out.println("循环第" + sum + "条数据为: " + document.get("UserName") + ",今年" + document.get("Age") + "岁!");
            }
            System.out.println("=====================查询所有文档成功!=====================");
            /* 输出
            循环第1条数据为: 露露,今年24岁!
            循环第2条数据为: 捕获第0只瑶瑶,今年18岁!
            循环第3条数据为: 捕获第1只瑶瑶,今年19岁!
            循环第4条数据为: 捕获第2只瑶瑶,今年20岁!
            循环第5条数据为: 捕获第3只瑶瑶,今年21岁!
            循环第6条数据为: 捕获第4只瑶瑶,今年22岁!*/
        }
    
        // 5.2 根据_id查询文档
        private static void searchDocumentById(String database, String collection1) {
            MongoCollection collection = MongoDBPoolUtil.getCollection(database, collection1);
            FindIterable<Document> iterable = collection.find(Filters.eq("_id", new ObjectId("60f14e1922aa312798d04128"))); //返回的是一个迭代器
            MongoCursor<Document> cursor = iterable.iterator();  //返回的是一个游标
            while (cursor.hasNext()) {
                Document document = cursor.next();
                System.out.println(document.get("UserName") + " " + document.get("Age"));
            }
        }
    }
    

    文档出处

    1. 转载出处:点击跳转 文章出自:青岑的博客
  • 相关阅读:
    mui---mui.preload预加载后的几种显示方法
    mui---验证页面是否加载或显示
    JS---使用localStorage传递参数
    mui---通过mui.openWindow传递参数
    mui---window.location.href通过url传递参数
    mui---mui.fire触发自定义事件传事件对象中的参数
    mui---webview对象调用evalJS来传递参数
    window----结束占用某端口的进程
    爬虫程序
    winform 属性
  • 原文地址:https://www.cnblogs.com/Twittery/p/15031970.html
Copyright © 2011-2022 走看看