Mongodb的java driver中的Mongo和MongoClient有什么区别

2025-04-25 22:39:30
推荐回答(1个)
回答1:

Java代码 收藏代码// 构造方法 // replicaSetSeeds 所有 Server 的地址 // options 默认的查询设置 public Mongo( List 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 获取所有数据库的名称   实现如下: Java代码 收藏代码// 获取所有数据库的名称 public List 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 list = new ArrayList(); for (Object o : l) { list.add(((BasicDBObject)o).getString("name")); } return list; }   涉及的其他类:   BasicDBObject 与 MongoDB 交互时使用的数据结构,实际相当于 Java 中的 Map,或 JavaScript 中的 object   CommandResult 操作执行的结果,继承 BasicDBObject,提供一些便捷的方法,实际仍然是在 DBObject 中查询相应的属性。