• Java mongodb api疑问之MongoCollection与DBCollection


    在学习Java mongodb api时发现,可以调用不同的java mongodb api来连接数据库并进行相关操作。

    方式一:

    该方式使用mongoClient.getDB("xxx")来获取DB对象,然后通过getCollection("xxx")获取相应的集合。其他操作略。

    import com.mongodb.BasicDBObject;
    import com.mongodb.DBCollection;
    import com.mongodb.DBObject;
    import com.mongodb.MongoClient;
    
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    
    public class MonConnections {
    
        //Mongo db 批量插入数据
        private static MongoClient mongoClient = new MongoClient("127.0.0.1", 27017);
        private static long count = 2000000;
        public static MongoClient getClient(){
            return  mongoClient;
        }
    
        public static void  main(String[] args){
            List<DBObject> list = new ArrayList<>();
            DBCollection collection = mongoClient.getDB("test").getCollection("book");
    
            for (int i = 0; i < 2200000; i++){
                DBObject object = new BasicDBObject();
                object.put("id", String.valueOf(count));
                Date date = new Date();
                object.put("add_time", date);
                object.put("title", "mongo"+count++);
                list.add(object);
                if (i != 0 && i %10000 == 0){
                    System.out.println("插入" + " " + i + "本书");
                    collection.insert(list);
                    list.clear();
                }
            }
    
    
        }
    }

    方式二:

    可以看出方式二使用的是getDatabase("xxx")来获取数据库对象MongoDatabase,集合的对象也是MongoCollection<Document>。

        @Test
        public void getCollection( ){
            try{   
                   // 连接到 mongodb 服务
                     MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
                     // 连接到数据库
                     MongoDatabase mongoDatabase = mongoClient.getDatabase("mongodbname");  
                   System.out.println("Connect to database successfully");
                  
                   MongoCollection<Document> collection = mongoDatabase.getCollection("javatest");
                   //DBCollection
                   System.out.println("集合 test 选择成功");
                  }catch(Exception e){
                    System.err.println( e.getClass().getName() + ": " + e.getMessage() );
                 }
           }

    问题:什么时候使用方式一?什么时候应该用方式二?

    驱动2.x使用方式一,驱动3.0及以后使用方式二。

    驱动3.0也保留了DBObject / DBCollection / DB类。但是在getDB()方法中,提示了弃用。

    因此,一般建议是将Document / MongoCollection / MongoDatabase用于新的应用程序开发。

    参考资料:https://stackoverflow.com/questions/29364787/mongocollection-versus-dbcollection-java

  • 相关阅读:
    高斯 约旦消元法
    取模运算相关的常数优化
    数论同余学习笔记 Part 3
    异或相关的杂题
    数论同余学习笔记 Part 1
    杂题乱做(一)
    c++优先队列(priority_queue)用法详解
    https://lyxw.xyz
    [题目] Luogu P3707 [SDOI2017]相关分析
    [笔记]Splay&Treap&FhqTreap
  • 原文地址:https://www.cnblogs.com/muxi0407/p/11648106.html
Copyright © 2020-2023  润新知