• 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

  • 相关阅读:
    Android视图控件架构分析之View、ViewGroup
    JAVA多线程编程——JAVA内存模型
    开源CMS系统Moodle对比中国本土化开源在线教育平台EduSoho
    Android系统Binder机制学习总结
    Android中一个关于ListView的奇怪问题
    判断分数区间(优良以及未及格)
    js求三个数的最大值运算
    年月日时间选择
    js单击时页面的弹出
    margin与padding
  • 原文地址:https://www.cnblogs.com/muxi0407/p/11648106.html
Copyright © 2020-2023  润新知