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