2424 */
2525package site .ycsb .db ;
2626
27- import com .mongodb .MongoClient ;
28- import com .mongodb .MongoClientURI ;
27+ import com .mongodb .MongoClientSettings ;
28+ import com .mongodb .ConnectionString ;
2929import com .mongodb .ReadPreference ;
3030import com .mongodb .WriteConcern ;
3131import com .mongodb .client .FindIterable ;
32+ import com .mongodb .client .MongoClient ;
33+ import com .mongodb .client .MongoClients ;
3234import com .mongodb .client .MongoCollection ;
3335import com .mongodb .client .MongoCursor ;
3436import com .mongodb .client .MongoDatabase ;
3537import com .mongodb .client .model .InsertManyOptions ;
3638import com .mongodb .client .model .UpdateOneModel ;
3739import com .mongodb .client .model .UpdateOptions ;
40+ import com .mongodb .client .model .ReplaceOptions ;
3841import com .mongodb .client .result .DeleteResult ;
3942import com .mongodb .client .result .UpdateResult ;
4043import site .ycsb .ByteArrayByteIterator ;
@@ -78,6 +81,8 @@ public class MongoDbClient extends DB {
7881 /** The options to use for inserting a single document. */
7982 private static final UpdateOptions UPDATE_WITH_UPSERT = new UpdateOptions ()
8083 .upsert (true );
84+ private static final ReplaceOptions REPLACE_WITH_UPSERT = new ReplaceOptions ()
85+ .upsert (true );
8186
8287 /**
8388 * The database name to access.
@@ -204,7 +209,8 @@ public void init() throws DBException {
204209 }
205210
206211 try {
207- MongoClientURI uri = new MongoClientURI (url );
212+ ConnectionString uri = new ConnectionString (url );
213+ MongoClientSettings .Builder csb = MongoClientSettings .builder ().applyConnectionString (uri );
208214
209215 String uriDb = uri .getDatabase ();
210216 if (!defaultedUrl && (uriDb != null ) && !uriDb .isEmpty ()
@@ -216,14 +222,8 @@ public void init() throws DBException {
216222
217223 }
218224
219- readPreference = uri .getOptions ().getReadPreference ();
220- writeConcern = uri .getOptions ().getWriteConcern ();
221-
222- mongoClient = new MongoClient (uri );
223- database =
224- mongoClient .getDatabase (databaseName )
225- .withReadPreference (readPreference )
226- .withWriteConcern (writeConcern );
225+ mongoClient = MongoClients .create (csb .build ());
226+ database = mongoClient .getDatabase (databaseName );
227227
228228 System .out .println ("mongo client connection created with " + url );
229229 } catch (Exception e1 ) {
@@ -266,7 +266,7 @@ public Status insert(String table, String key,
266266 // to current inability of the framework to clean up after itself
267267 // between test runs.
268268 collection .replaceOne (new Document ("_id" , toInsert .get ("_id" )),
269- toInsert , UPDATE_WITH_UPSERT );
269+ toInsert , REPLACE_WITH_UPSERT );
270270 } else {
271271 collection .insertOne (toInsert );
272272 }
@@ -279,7 +279,7 @@ public Status insert(String table, String key,
279279 for (Document doc : bulkInserts ) {
280280 updates .add (new UpdateOneModel <Document >(
281281 new Document ("_id" , doc .get ("_id" )),
282- doc , UPDATE_WITH_UPSERT ));
282+ new Document ( "$set" , doc ) , UPDATE_WITH_UPSERT ));
283283 }
284284 collection .bulkWrite (updates );
285285 } else {
0 commit comments