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

原文地址:https://www.cnblogs.com/muxi0407/p/11648106.html

时间: 2024-10-10 07:09:05

Java mongodb api疑问之MongoCollection与DBCollection的相关文章

Java MongoDB : Save image example

Java MongoDB : Save image example In this tutorial, we show you how to save an image file into MongoDB, via GridFS API. The GridFS APIs are able to serve other binary files as well, like video and music files. 译:在本教程中,我们将向你展示如何通过 GridFS API 保存一个图片到Mo

【MongoDB数据库】Java MongoDB CRUD Example

上一篇我们讲了MongoDB 的命令入门初探,本篇blog将基于上一篇blog所建立的数据库和表完毕一个简单的Java MongoDB CRUD Example,利用Java连接MongoDB数据库.并实现创建数据库.获取表.遍历表中的对象.对表中对象进行CRUD操作等例程. 1.下载MongoDB Java 支持驱动包 [gitHub下载地址]https://github.com/mongodb/mongo-java-driver/downloads 2.建立Javaproject,并导入ja

java调用API操作HDFS

本文介绍Java调用API从hdfs读取数据 package mongodb; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URI; import java.util.Arrays; import org.apache.commons.lang.StringUtils; import org.apache.hadoop.co

java MongoDB查询(二)复杂查询

前言 在上篇<java MongoDB查询(一)简单查询>中我们简单了解了下查询,但是仅仅有那些查询是不够用的,还需要复杂的查询,这篇就这点进行叙述. 1.数据结构 集合:firstCollection 数据内容: { "_id" : ObjectId("55adba52fa1f3cf038c2aea6"), "name" : "user0", "age" : 22, "sex&quo

java MongoDB分页优化

最近项目在做网站用户数据新访客统计,数据存储在MongoDB中,统计的数据其实也并不是很大,1000W上下,但是公司只配给我4G内存的电脑,让我程序跑起来气喘吁吁...很是疲惫不堪. 最常见的问题莫过于查询MongoDB内存溢出,没办法只能分页查询.这种思想大家可能都会想到,但是如何分页,确实多有门道! 网上用的最多的,也是最常见的分页采用的是skip+limit这种组合方式,这种方式对付小数据倒也可以,但是对付上几百上千万的大数据,却只能望而兴叹... 经过网上各种查找资料,寻师问道的,发现了

全面挖掘Java Excel API 使用方法

使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要使用Java语言来操纵Excel文件并不是一件容易的事.在Web应用日益盛行的今天,通过Web来操作Excel文件的需求越来越强烈,目前较为流行的操作是在JSP或Servlet 中创建一个CSV (comma separated values)文件,并将这个文件以MIME,text/csv类型返回给浏览器,接着浏览器调用Excel并且显示CSV文件.这样只是说可以访问到Excel文件,但是还不能真正的操纵Excel文件,

新增的Java MapReduce API

http://book.51cto.com/art/201106/269647.htm Hadoop的版本0.20.0包含有一个新的 Java MapReduce API,有时也称为"上下文对象"(context object),旨在使API在今后更容易扩展.新的API 在类型上不兼容先前的API,所以,需要重写以前的应用程序才能使新的API发挥作用. 新增的API 和旧的API 之间,有下面几个明显的区别. 新的API 倾向于使用虚类,而不是接口,因为这更容易扩展.例如,可以无需修改

Atitit. C# java 的api 目录封装结构映射总结

Atitit. C#  java 的api 目录封装结构映射总结 C# java ref System.Reflection System.Type, java.lang.ref concurrent thread System.Threading java.lang.Thread collection System.collection java.util.collection Io Sys.io sys.text sys.xml sys.data.sql sys.data sys.web s

Java 2D API - 2. Graphics 入门

Java 2D API强大而复杂,不过大多时候我们只需使用java.awt.Graphcis类的部分功能.下面的内容将覆盖大多数的常见应用. Graphics 类中的方法大致可以分为两类: Draw and fill方法,用于绘制基本的图形.文本和图像: 属性设置方法,用于控制绘制和填充的效果.setFont()和setColor()等方法就属于这类方法. 下图显示这些方法和图像的对应关系: 1. drawString() 用于绘制文本: g.drawString("Hello", 1