我正在尝试理解Java MongoDB驱动程序使用的BSON实现(官方的异步驱动程序,如果这很重要).
但是,我完全坚持代表BSON文档的类.我专注于"正常"的,暂时忽略了懒惰结构等功能.到目前为止,我发现:
我还发现MongoDB驱动程序默认将其结果作为Document实例返回,并且可以更改为返回BsonDocument.OTOH,JSON类想要返回一个DBObject,它由BasicDBObject实现,扩展了BasicBSONObject.
这些课程如何相关?在哪种情况下应该使用哪一个?
编写接受BSON文档作为参数的代码或返回它时,我应该使用哪种类型?这实际上是我最感兴趣的问题,但上述限制似乎是矛盾的.
jye*_*min 34
在3.0驱动程序之前,所有BSON文档都表示为org.bson包中的接口BSONObject的实例.驱动程序API(DBCollection等)进一步强制要求DBObject,BSONObject的子接口.驱动程序的大多数用户依赖BasicDBObject作为实现DBObject的具体类.
此外,从JSON解析并序列化为JSON的JSON类生成并期望DBObject的实例.
在新的3.0驱动程序CRUD API(MongoCollection)中,DBObject在DBCollection中扮演的角色已被拆分.
MongoCollection是通用的(MongoCollection <TDocument>).泛型类型用于insertOne等写入方法,也是查询文档集合的方法的默认文档类型,例如
用于表示查询结果的类默认为TDocument,但可以通过调用以下方法来更改:
驱动程序作者希望尽可能少地限制这些类型,因为它们可能是预先存在的POJO类.唯一的要求是该类的编解码器已在CodecRegistry中注册用于MongoCollection.详情请见此处.
对于用于表示查询过滤器,更新规范,排序标准等实体的BSON文档,驱动程序强制要求用于此目的的类实现名为Bson的新接口.BasicDBObject,Document和BsonDocument都实现了该接口,因此可以使用任何接口,或者您可以创建自己的自定义类型.驱动程序本身从大多数新构建器静态工厂方法返回Bson实例,如Filters类中的方法.
最后,对于返回表示管理命令结果的BSON文档的辅助方法(如运行通用命令),驱动程序默认返回Document的实例.
如果需要在JSON和Document或BsonDocument之间进行转换,则可以使用直接在这些类上定义的parse和toJson方法.在下面,这些依赖于3.0中引入的新JsonReader和JsonWriter类.有关详细信息,请参见此处
作者尚未弃用现有的JSON类,但很可能会在将来的版本中使用.
关于使用哪些类,我将提供以下建议:
| 归档时间: |
|
| 查看次数: |
7406 次 |
| 最近记录: |