我正在使用MongoDB v3.2.0和Mongo Java Driver 3.0.4版本。我正在使用So [r1,f] = bd and [r2,f] = ab
(不建议使用)而不是在java中使用BasicDBObject
,因为我需要做很多更改才能在我的独立java项目中转换为Document。任何人都可以告诉我更改为Document,内存和大型集合插入和读取是否会有任何性能改进。有没有办法改善我使用java在MongoDB上的频繁写入和读取操作。
答案 0 :(得分:3)
不推荐使用基本DBobject。 BasicDBobject中唯一不推荐使用的部分是DBPointer
类和其他一些方法,例如toString() and getId()
文档实现Map<String, Object>
,与基本数据库对象相比,编写的代码更少
<强> DBOBJECT 强> 虽然不建议用于新应用程序,但从2.x驱动程序系列升级的应用程序可能会继续使用DBObject接口来表示BSON文档。 DBObject与Document类似,它将BSON值表示为Object,但它有一些无法克服的缺点:
它是一个接口而不是一个类,所以如果不打破二进制兼容性就无法扩展它的API。
它实际上并没有实现Map。
因为它是一个接口,所以需要一个名为BasicDBObject的独立具体类来实现该接口
<强> BSON 强> 为了将这些结合在一起,驱动程序包含一个名为Bson的小而强大的接口。任何代表BSON文档的类,无论是包含在驱动程序本身还是来自第三方,都可以实现此接口,然后可以在需要BSON文档的高级API中的任何位置使用。
答案 1 :(得分:1)
3.0-3.12.2版本范围内的MongoDB Java驱动程序具有一个“ Uber”驱动程序,其中包含旧版客户端实现以及较新的客户端。当考虑将org.bson.Document与com.mongodb.BasicDBObject进行比较时,类org.bson.Document
与较新的客户端堆栈一起使用,而com.mongodb.DBobject
或com.mongodb.BasicDBObject
与旧客户端堆栈一起使用。在同一个驱动程序中同时包含旧版内容和较新内容可能会造成混乱。如果您只对较新的客户端感兴趣,请在https://mvnrepository.com/artifact/org.mongodb/mongodb-driver-sync上查看名为'mongodb-driver-sync'MVN repo的驱动程序。如果只需要旧版,请参见https://mvnrepository.com/artifact/org.mongodb/mongodb-driver-legacy。一些工件是通用的,例如com.mongodb.WriteConcern
。因此,它们将同时存在于旧版和同步中。我的理解是,此“ Uber”驱动程序在4.0或更高版本中将不存在。旧版驱动程序缺少会话支持,事务支持和更改流。明智地选择。