MongoDB Java Driver 源码分析(10):com.mongodb 总结
com.mongodb 是 MongoDB Driver 核心类所在的包。其中 Mongo 类是整个 Driver 的入口点。
下面列出之前对这个包中的几个主要类的介绍:
Mongo 表示一个数据库实例,可能包含多个 Server 。
http://xxing22657-yahoo-com-cn.iteye.com/blog/1236186
DB 表示一个数据库连接。
http://xxing22657-yahoo-com-cn.iteye.com/blog/1291183
DBApiLayer 继承 DB 类。DB 操作的底层实现,通过 Mongo 对象间接调用。
http://xxing22657-yahoo-com-cn.iteye.com/blog/1418647
DBTCPConnector 表示 TCP 数据连接的类。
http://xxing22657-yahoo-com-cn.iteye.com/blog/1416331
ReplicaSetStatus 表示集群状态的类。
http://xxing22657-yahoo-com-cn.iteye.com/blog/1424055
DBCollection 表示数据集合的抽象类。
http://xxing22657-yahoo-com-cn.iteye.com/blog/1255181
DBPort 表示数据连接端口,维护一个 Socket。
http://xxing22657-yahoo-com-cn.iteye.com/blog/1424140
DBCursor 用于遍历 find() 等查询操作的返回结果。
http://xxing22657-yahoo-com-cn.iteye.com/blog/1269739
几个类之间的主要关系
com.mongodb 包中的几个类之间的主要关系如下图所示:
Mongo 对其他类的依赖:
DB 和 DBApiLayer:getDB 的返回值类型是 DB,但返回的实际上是 DBApiLayer 类的实例
DBTCPConnector:getConnector 返回的是 DBTCPConnector 类的实例
ReplicaSetStatus:getReplicaSetStatus 返回的是 ReplicaSetStatus 类的实例
DB 对其他类的依赖:
DBCollection:createCollection 等方法返回的是 DBCollection 类的实例
DBApiLayer 对其他类的依赖:
DB:DBApiLayer 继承了 DB 类
DBCollection:DBApiLayer.MyCollection 继承了 DBCollection
DBTCPConnector 对其他类的依赖:
DBPort:say,call 等方法中调用了 DBPort 的 say,call 等方法
ReplicaSetStatus 对其他类的依赖:
DBPort:内部类 Node 的 update 方法调用了 DBPort 的 runCommand 方法
DBCollection 对其他类的依赖:
DBCursor:find 方法构造并返回 DBCursor 类的实例
com.mongodb.gridfs 对 com.mongodb 的依赖
com.mongodb.gridfs 对 com.mongodb 的依赖主要表现为 GridFS、GridFSDBFile、GridFSInputFile 对 DB、DBCollection、DBCursor 的依赖。
其中:
GridFS 的 getDB 方法的返回值类型是 DB
GridFS 的 getFileList 方法的返回值类型是 DBCursor
GridFS 和 GridFSDBFile 的 find、remove 等方法调用了 DBCollection 的 find、remove 等相应的方法。
GridFSInput 的 _dumpBuffer 方法调用了 DBCollection 的 save 方法