MongoDB 中(BsonDocument & Document & Bson)关系详解 类图: Java Driver 中有这么几个类和接口来表示Bson文档: «Interface»Bson任何代表BSON文档的类,不管是driver中包含的还是第三方的包,都要实现Bson这个接口,这样就可以在高阶API中任何需要 BSON Document 的地方使用,因此可以根据给定的需要互换使用.«Interface»MapBsonDocument虽然对于用户来说,一般使用驱动的高阶API,不使用这个类,但是BsonDocument类对于驱动程序在内部管理文档至关重要.BsonDocument类可以表示任何具有安全类型的复杂的动态结构化文档.BsonDocument实现了类型安全的Map接口,所以即便是int,String,List这种内置类型,仍然需要被包裹在BsonValue的子类中.要看BsonValue的子类详情,可以参阅 BsonValue API 文档.Document大多数的应用程序会用Document类来替代BsonDocument类,Document类和BsonDocument类相似,也可以表示任何复杂的动态结构化文档,但是对于类型要求不像BsonDocument那么严格.Document实现的是Map接口,所以的对类型的要求更宽泛.«Interface»BSONObject«Interface»DBObjectDBObject接口类似Document不建议新的应用程序再使用它,但是从的2.X系列的驱动升级的应用程序可能继续使用因为他也将BSON的值表示为Object,但是它有一些不可能克服的缺点:1. 它是一个接口而不是一个类,所以它的API不能在不破坏二进制兼容性的情况下被扩展.2. 它并没有真正实现Map接口3. 它是一个接口,所以必须需要一个单独的具体类 BasicDBObject 去实现它. 总结: BsonDocument 和 Document 是类BsonDocument 更适用于底层(内部)的 API,并且对于值类型的划分更细更严格Document 对值类型的划分更宽泛,更适合高阶的 APIDBObject 是接口,需要一个具体的类 BasicDBObject 去实现它