`
裴小星
  • 浏览: 265389 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
8ccf5db2-0d60-335f-a337-3c30d2feabdb
Java NIO翻译
浏览量:27833
F3e939f0-dc16-3d6e-8c0b-3315c810fb91
PureJS开发过程详解
浏览量:74183
07a6d496-dc19-3c71-92cf-92edb5203cef
MongoDB Java ...
浏览量:62976
社区版块
存档分类
最新评论

MongoDB Java Driver 源码分析(2):com.mongodb.Mongo

阅读更多
  Mongo 表示一个数据库实例,可能包含多个 ServerAddress 和多个 DB。
  本文将介绍 Mongo 类中的三个重要方法:构造方法,获取所有数据库的名称,通过名称获取指定的数据库

构造方法

  实现如下:
// 构造方法
// replicaSetSeeds 所有 Server 的地址
// options 默认的查询设置

public Mongo( List<ServerAddress> replicaSetSeeds , MongoOptions options )
    throws MongoException {
    // 设置类变量
    _addr = null;
    _addrs = replicaSetSeeds;
    _options = options;

    // 应用查询设置
    _applyMongoOptions();
    // 创建 TCP 连接实例
    _connector = new DBTCPConnector( this , _addrs );

    // 启动数据清理线程
    _cleaner = new DBCleanerThread();
    _cleaner.start();
}

// 应用查询设置
void _applyMongoOptions() {
    // 是否在 Slave Server 上执行查询
    if (_options.slaveOk) slaveOk();
  // 应用默认的写入设置
    setWriteConcern( _options.getWriteConcern() );
}

// 应用默认的写入设置
public void setWriteConcern( WriteConcern concern ){
    _concern = concern;
}

  涉及的其他类:
  ServerAddress 用于保存主机名和所使用的端口的信息
  MongoOptions 用于保存查询设置(是否在 Slave 上进行查询,超时设置等)
  WriteConcern 写入参数设置,包括:Server 数量,写入超时设置,是否立即将结果同步到文件系统中
  DBTCPConnector 表示 TCP 数据连接,后续文章中将详细介绍。
  DBCleanerThread 清理线程,每隔一段时间清理各个DB 的 DBCursor

获取所有数据库的名称

  实现如下:
// 获取所有数据库的名称
public List<String> getDatabaseNames()
    throws MongoException {
    // 创建表示数据库命令的 DBOBject
    BasicDBObject cmd = new BasicDBObject();
    cmd.put("listDatabases", 1);

    // 使用 admin 数据库执行命令并返回结果
    CommandResult res = getDB( "admin" ).command(cmd, getOptions());
    // 有错误的情况下抛出异常
    res.throwOnError();

    // 获取结果中的 databases 属性,即数据库列表
    List l = (List)res.get("databases");

    // 遍历 databases,将名称保存到一个 list 中,并返回结果
    List<String> list = new ArrayList<String>();

    for (Object o : l) {
        list.add(((BasicDBObject)o).getString("name"));
    }
    return list;
}

  涉及的其他类:
  BasicDBObject 与 MongoDB 交互时使用的数据结构,实际相当于 Java 中的 Map,或 JavaScript 中的 object
  CommandResult 操作执行的结果,继承 BasicDBObject,提供一些便捷的方法,实际仍然是在 DBObject 中查询相应的属性。

获取指定数据库的引用

  实现如下:
// 通过名称获取指定的数据库
public DB getDB( String dbname ){
    // _dbs 是一个用于缓存结果的 Map (名称 => DB)
    // 先在缓存中查询以节省时间 
    DB db = _dbs.get( dbname );
    if ( db != null )
        return db;

    // 缓存中不存在,则创建新的 DB 实例
    db = new DBApiLayer( this , dbname , _connector );
    DB temp = _dbs.putIfAbsent( dbname , db );
    if ( temp != null )
        return temp;
    return db;
}

  涉及的其他类:
  DBApiLayer 该类继承 DB 类。实现底层的 DB 操作,通过 Mongo 对象间接调用。将在后续的文章中进行详细的介绍。
4
2
分享到:
评论

相关推荐

    MongoDB Java Driver 源码分析(1):Package 概述

    本篇文章将聚焦于MongoDB Java Driver的源码分析,首先从Package概述的角度进行深入探讨。 MongoDB Java Driver的源码主要分为以下几个核心包: 1. **com.mongodb**: 这是最顶层的包,包含了驱动的核心组件。`...

    mongo-java-driver-3.2.2.jar.zip

    MongoDB是一个流行的开源、文档型数据库系统,而`mongo-java-driver`是官方提供的Java API,允许开发者在Java应用程序中执行各种数据库操作,如读取、写入、查询等。 在本例中,我们讨论的是`mongo-java-driver`的...

    mongodb-java-driver-4.4.0.jar

    mongodb-java-driver-4.4.0.jar

    mongo-java-driver-3.12.7.jar

    mongo-java-driver-3.12.7 最新版本,java连接MongoDB最新驱动,有需要的可以自行下载

    MongoDB Java Driver 简单操作

    ### MongoDB Java Driver 简单操作详解 #### 一、简介 MongoDB 是一款非常流行的文档型数据库系统,因其灵活性和高性能而被广泛应用于多种场景之中。为了方便开发者使用 Java 进行开发,MongoDB 提供了官方的 Java ...

    mongodb-driver-core-4.2.3-API文档-中文版.zip

    标签:mongodb、driver、core、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...

    mongodb-driver-sync-4.2.3-API文档-中英对照版.zip

    标签:mongodb、driver、sync、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...

    MongoDB_3.8.2驱动jar包及其同版本依赖包bson和mongodb-driver-core

    java和mongodb连接,需要mongodb-driver,您还必须下载其依赖项: bson和 mongodb-driver-core》》3个包: mongodb-driver-3.8.2.jar; bson-3.8.2.jar; mongodb-driver-core-3.8.2.jar

    mongodb-java-driver-3.5.0.jar最新驱动包

    亲测可用,解压包含三个jar包,引用时sources和doc包根据需要添加。 mongo-java-driver-3.5.0.jar; mongo-java-driver-3.5.0-javadoc.jar; mongo-java-driver-3.5.0-sources.jar;

    经过改造的mongo-java-driver-2.14.3.jar.zip

    在这个特定的场景中,我们讨论的是一个经过改造的`mongo-java-driver-2.14.3.jar.zip`文件,它被优化以适应在Kettle(Pentaho Data Integration)环境中使用,特别是与包含用户认证的MongoDB实例进行交互。...

    mongodb-driver-core-4.2.3-API文档-中英对照版.zip

    标签:mongodb、driver、core、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...

    MongoDb java driver 3.4.2

    - `mongo-java-driver-3.4.2.jar`:这是核心的MongoDB Java驱动程序库,包含了所有必要的类和方法,用于在Java应用中连接、查询和操作MongoDB数据库。 - `mongo-java-driver-3.4.2-sources.jar`:这个文件包含驱动...

    MongoDb java driver 3.4.2最新编译版.rar

    软件介绍: mongodb 的java驱动,资源内包含三个不同版本,分别是:javadoc版sources版和mongo-java-driver-3.4.2.jar编译过的版本。有需要的同学可直接拿去使用。

    mongodb-async-driver-2.0.1 jar包

    MongoDB异步驱动程序(mongodb-async-driver)是为Java开发者设计的一个库,它允许应用程序以非阻塞的方式与MongoDB服务器进行通信,提高了处理大量并发请求的能力。 在"mongodb-async-driver-2.0.1.jar"这个特定...

    mongodb java Driver

    此外,`MongoDB Java驱动程序`的版本更新也会带来新的特性与改进,比如`mongo-2.5.3.jar`是较旧的一个版本,可能不包含最新的功能和性能提升。 为了更好地理解和使用MongoDB Java驱动程序,建议参考官方文档和社区...

    MongoDBjava各版本驱动下载

    MongoDB Java驱动是Java开发者与MongoDB数据库交互的重要工具,它允许Java应用程序通过标准的Java API来执行查询、插入、更新和删除等操作。在Java中使用MongoDB,首先需要安装并配置对应的驱动版本,以确保与正在...

    mongo-java-driver-3.4.3,java连接mongodb的jar包驱动包

    mongo-java-driver-3.4.3.jar 是 MongoDB 官方为 Java 开发者提供的 Java 驱动程序的一个特定版本(3.4.3)。这个 JAR 文件包含了与 MongoDB 数据库进行交互所需的类和接口,允许 Java 应用程序连接到 MongoDB 实例...

    Mongodb java包

    1. **mongodb-driver-3.6.0.jar**:这是MongoDB Java驱动程序的主要组件,它包含了连接MongoDB服务器、执行查询、更新和插入操作等所需的所有类和接口。3.6.0版本是这个驱动的一个特定版本,确保了与MongoDB 3.6版本...

    mongo-java-driver最新jar.zip

    mongo-java-driver3.0以上jar压缩包大全 try { //1.连接池相关选项配置 MongoClientOptions options=MongoClientOptions.builder() .connectionsPerHost(poolSize) .minConnectionsPerHost(minpoolsize) ...

    mongo-java-driver-3.4.2.jar

    mongo-java-driver-3.4.2.jar

Global site tag (gtag.js) - Google Analytics