mongodb中数据库连接类mongoClient与mongo在写策略上的区别

Mongo和MongoClient 两者的关系

1、Mongo和MongoClient类均在mongodb驱动中定义的,因此两者都可以作为数据库连接类。

2、  MongoClient作为官方的默认连接类,其继承了mongo

3、mongo与 mongoClient相比,在写性能上较快,读性能上两者相差不大,这个的主要原因在于,两者的写策略不同

MongoClient 写策略的源码解读

MongoClient 的默认构造函数


带参数的构造函数,执行如下:


在build 方法中 ,创建了mongoClientOption


mongoClientOption 的writeConcern 为写策略


该写策略默认 为acknowledged, 也就是需要写入确认信息


从其注释信息,可以看出这个写策略的解释



Mongo 写策略的源码解读

默认的构造函数为


查看creategacyOptions静态方法  


在MongoClientOptions类的 legacyDefaults()方法中,设置了写策略为


UNACKNOWLEDGED 策略的意思



通过源码解读,发现两者 作为mongodb 数据库连接类,在写策略上是存在不同的,这两种写策略的不同,决定了mongo比mongoClient 的写入要快的多,但是官方已经不建议使用mongo了,那么怎么使用mongoClient 来到达快速写入的目的呢!mongoClient 提供了修改写策略的方法,如下:


,这样就能实现不需要写入返回信息的场景,快速到达写操作。


总结:

本文从源码解读了mongo 和mongoClient 在写策略上的差别,并对mongoClient 进行修策略的修改进行了演示,最重要的就是这两种写策略在什么场景下使用,UNACKNOWLEDGED 在不需要插入返回信息的情况,比如,不需要关心操作是否成功,总共写了多少条数据,ACKNOWLEDGED 写策略则会返回一个WriteResult 对象,保存插入的返回信息。



猜你喜欢

转载自blog.csdn.net/jtcode_is_my_partner/article/details/80936648