diff --git a/persistence-modules/java-mongodb/pom.xml b/persistence-modules/java-mongodb/pom.xml
index 2e366d8368..844b9e5bcd 100644
--- a/persistence-modules/java-mongodb/pom.xml
+++ b/persistence-modules/java-mongodb/pom.xml
@@ -14,20 +14,14 @@
-
- de.flapdoodle.embedmongo
- de.flapdoodle.embedmongo
- ${flapdoodle.version}
- test
-
org.mongodb
- mongo-java-driver
+ mongodb-driver-sync
${mongo.version}
dev.morphia.morphia
- core
+ morphia-core
${morphia.version}
@@ -42,12 +36,18 @@
${testcontainers.version}
test
+
+ de.flapdoodle.embed
+ de.flapdoodle.embed.mongo
+ ${flapdoodle.version}
+ test
+
- 3.12.1
- 1.11
- 1.5.3
+ 4.8.2
+ 4.4.1
+ 2.0.0
\ No newline at end of file
diff --git a/persistence-modules/java-mongodb/src/main/java/com/baeldung/MongoExample.java b/persistence-modules/java-mongodb/src/main/java/com/baeldung/MongoExample.java
index 9af1e1f6a4..ef4003fa82 100644
--- a/persistence-modules/java-mongodb/src/main/java/com/baeldung/MongoExample.java
+++ b/persistence-modules/java-mongodb/src/main/java/com/baeldung/MongoExample.java
@@ -1,53 +1,64 @@
package com.baeldung;
-import com.mongodb.BasicDBObject;
-import com.mongodb.DB;
-import com.mongodb.DBCollection;
-import com.mongodb.DBCursor;
-import com.mongodb.MongoClient;
+import java.util.ArrayList;
+
+import org.bson.Document;
+
+import com.mongodb.client.FindIterable;
+import com.mongodb.client.MongoClient;
+import com.mongodb.client.MongoClients;
+import com.mongodb.client.MongoCollection;
+import com.mongodb.client.MongoCursor;
+import com.mongodb.client.MongoDatabase;
public class MongoExample {
public static void main(String[] args) {
+ try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
- MongoClient mongoClient = new MongoClient("localhost", 27017);
+ MongoDatabase database = mongoClient.getDatabase("myMongoDb");
- DB database = mongoClient.getDB("myMongoDb");
+ // print existing databases
+ mongoClient.listDatabaseNames().forEach(System.out::println);
- // print existing databases
- mongoClient.getDatabaseNames().forEach(System.out::println);
+ boolean collectionExists = mongoClient.getDatabase("myMongoDb").listCollectionNames()
+ .into(new ArrayList<>()).contains("customers");
+ if (!collectionExists) {
+ database.createCollection("customers");
+ }
- database.createCollection("customers", null);
+ // print all collections in customers database
+ database.listCollectionNames().forEach(System.out::println);
- // print all collections in customers database
- database.getCollectionNames().forEach(System.out::println);
+ // create data
+ MongoCollection collection = database.getCollection("customers");
+ Document document = new Document();
+ document.put("name", "Shubham");
+ document.put("company", "Baeldung");
+ collection.insertOne(document);
- // create data
- DBCollection collection = database.getCollection("customers");
- BasicDBObject document = new BasicDBObject();
- document.put("name", "Shubham");
- document.put("company", "Baeldung");
- collection.insert(document);
+ // update data
+ Document query = new Document();
+ query.put("name", "Shubham");
+ Document newDocument = new Document();
+ newDocument.put("name", "John");
+ Document updateObject = new Document();
+ updateObject.put("$set", newDocument);
+ collection.updateOne(query, updateObject);
- // update data
- BasicDBObject query = new BasicDBObject();
- query.put("name", "Shubham");
- BasicDBObject newDocument = new BasicDBObject();
- newDocument.put("name", "John");
- BasicDBObject updateObject = new BasicDBObject();
- updateObject.put("$set", newDocument);
- collection.update(query, updateObject);
+ // read data
+ Document searchQuery = new Document();
+ searchQuery.put("name", "John");
+ FindIterable cursor = collection.find(searchQuery);
+ try (final MongoCursor cursorIterator = cursor.cursor()) {
+ while (cursorIterator.hasNext()) {
+ System.out.println(cursorIterator.next());
+ }
+ }
- // read data
- BasicDBObject searchQuery = new BasicDBObject();
- searchQuery.put("name", "John");
- DBCursor cursor = collection.find(searchQuery);
- while (cursor.hasNext()) {
- System.out.println(cursor.next());
+ // delete data
+ Document deleteQuery = new Document();
+ deleteQuery.put("name", "John");
+ collection.deleteOne(deleteQuery);
}
-
- // delete data
- BasicDBObject deleteQuery = new BasicDBObject();
- deleteQuery.put("name", "John");
- collection.remove(deleteQuery);
}
}
diff --git a/persistence-modules/java-mongodb/src/main/java/com/baeldung/bsontojson/Book.java b/persistence-modules/java-mongodb/src/main/java/com/baeldung/bsontojson/Book.java
index 44e4ecb539..c57f759a95 100644
--- a/persistence-modules/java-mongodb/src/main/java/com/baeldung/bsontojson/Book.java
+++ b/persistence-modules/java-mongodb/src/main/java/com/baeldung/bsontojson/Book.java
@@ -1,11 +1,9 @@
package com.baeldung.bsontojson;
-import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.HashSet;
import java.util.Set;
-import dev.morphia.annotations.Embedded;
import dev.morphia.annotations.Entity;
import dev.morphia.annotations.Field;
import dev.morphia.annotations.Id;
@@ -25,7 +23,7 @@ public class Book {
@Property
private String title;
private String author;
- @Embedded
+
private Publisher publisher;
@Property("price")
private double cost;
diff --git a/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/CollectionExistence.java b/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/CollectionExistence.java
index 074913af4e..c94a7c042a 100644
--- a/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/CollectionExistence.java
+++ b/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/CollectionExistence.java
@@ -4,8 +4,8 @@ import java.util.ArrayList;
import org.bson.Document;
-import com.mongodb.DB;
-import com.mongodb.MongoClient;
+import com.mongodb.client.MongoClient;
+import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
@@ -18,7 +18,7 @@ public class CollectionExistence {
public static void setUp() {
if (mongoClient == null) {
- mongoClient = new MongoClient("localhost", 27017);
+ mongoClient = MongoClients.create("mongodb://localhost:27017");
}
databaseName = "baeldung";
testCollectionName = "student";
@@ -26,9 +26,9 @@ public class CollectionExistence {
public static void collectionExistsSolution() {
- DB db = mongoClient.getDB(databaseName);
+ MongoDatabase db = mongoClient.getDatabase(databaseName);
- System.out.println("collectionName " + testCollectionName + db.collectionExists(testCollectionName));
+ System.out.println("collectionName " + testCollectionName + db.listCollectionNames().into(new ArrayList<>()).contains(testCollectionName));
}
@@ -62,7 +62,7 @@ public class CollectionExistence {
MongoCollection collection = database.getCollection(testCollectionName);
- System.out.println(collection.count());
+ System.out.println(collection.countDocuments());
}
diff --git a/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/objectid/RetrieveIdExample.java b/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/objectid/RetrieveIdExample.java
index 74279bbfcd..5ccabc9326 100644
--- a/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/objectid/RetrieveIdExample.java
+++ b/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/objectid/RetrieveIdExample.java
@@ -5,7 +5,8 @@ import java.util.Date;
import org.bson.Document;
import org.bson.types.ObjectId;
-import com.mongodb.MongoClient;
+import com.mongodb.client.MongoClient;
+import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
@@ -13,7 +14,7 @@ public class RetrieveIdExample {
public static void main(String[] args) {
- try ( MongoClient mongoClient = new MongoClient("localhost", 27017) ) {
+ try ( MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017") ) {
MongoDatabase database = mongoClient.getDatabase("myMongoDb");
MongoCollection collection = database.getCollection("example");
diff --git a/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/update/MultipleFieldsExample.java b/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/update/MultipleFieldsExample.java
index ebc56cbfd0..9ad62bc1c7 100644
--- a/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/update/MultipleFieldsExample.java
+++ b/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/update/MultipleFieldsExample.java
@@ -3,7 +3,8 @@ package com.baeldung.mongo.update;
import org.bson.Document;
import com.mongodb.BasicDBObject;
-import com.mongodb.MongoClient;
+import com.mongodb.client.MongoClient;
+import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.result.UpdateResult;
@@ -16,7 +17,7 @@ public class MultipleFieldsExample {
// Connect to cluster (default is localhost:27017)
//
- MongoClient mongoClient = new MongoClient("localhost", 27017);
+ MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");
MongoDatabase database = mongoClient.getDatabase("baeldung");
MongoCollection collection = database.getCollection("employee");
diff --git a/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/update/UpdateFields.java b/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/update/UpdateFields.java
index a1b051e74c..594d535245 100644
--- a/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/update/UpdateFields.java
+++ b/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/update/UpdateFields.java
@@ -2,7 +2,8 @@ package com.baeldung.mongo.update;
import org.bson.Document;
-import com.mongodb.MongoClient;
+import com.mongodb.client.MongoClient;
+import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
@@ -83,10 +84,9 @@ public class UpdateFields {
public static void setup() {
if (mongoClient == null) {
- mongoClient = new MongoClient("localhost", 27017);
+ mongoClient = MongoClients.create("mongodb://localhost:27017");
database = mongoClient.getDatabase("baeldung");
collection = database.getCollection("student");
-
}
}
diff --git a/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/update/UpdateMultipleFields.java b/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/update/UpdateMultipleFields.java
index 96dd086ed7..08fdce68d6 100644
--- a/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/update/UpdateMultipleFields.java
+++ b/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/update/UpdateMultipleFields.java
@@ -2,7 +2,8 @@ package com.baeldung.mongo.update;
import org.bson.Document;
-import com.mongodb.MongoClient;
+import com.mongodb.client.MongoClient;
+import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
@@ -16,19 +17,19 @@ public class UpdateMultipleFields {
//
// Connect to cluster
//
+ try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27007");) {
+ MongoDatabase database = mongoClient.getDatabase("baeldung");
+ MongoCollection collection = database.getCollection("employee");
- MongoClient mongoClient = new MongoClient("localhost", 27007);
- MongoDatabase database = mongoClient.getDatabase("baeldung");
- MongoCollection collection = database.getCollection("employee");
+ //
+ // Update query
+ //
- //
- // Update query
- //
+ UpdateResult updateResult = collection.updateMany(Filters.eq("employee_id", 794875), Updates.combine(Updates.set("department_id", 4), Updates.set("job", "Sales Manager")));
- UpdateResult updateResult = collection.updateMany(Filters.eq("employee_id", 794875), Updates.combine(Updates.set("department_id", 4), Updates.set("job", "Sales Manager")));
-
- System.out.println("updateResult:- " + updateResult);
- System.out.println("updateResult:- " + updateResult.getModifiedCount());
+ System.out.println("updateResult:- " + updateResult);
+ System.out.println("updateResult:- " + updateResult.getModifiedCount());
+ }
}
diff --git a/persistence-modules/java-mongodb/src/main/java/com/baeldung/morphia/domain/Book.java b/persistence-modules/java-mongodb/src/main/java/com/baeldung/morphia/domain/Book.java
index 4ed2ab8580..b79550dcd1 100644
--- a/persistence-modules/java-mongodb/src/main/java/com/baeldung/morphia/domain/Book.java
+++ b/persistence-modules/java-mongodb/src/main/java/com/baeldung/morphia/domain/Book.java
@@ -1,6 +1,5 @@
package com.baeldung.morphia.domain;
-import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.HashSet;
import java.util.Set;
@@ -25,7 +24,7 @@ public class Book {
@Property
private String title;
private String author;
- @Embedded
+
private Publisher publisher;
@Property("price")
private double cost;
diff --git a/persistence-modules/java-mongodb/src/main/java/com/baeldung/tagging/TagRepository.java b/persistence-modules/java-mongodb/src/main/java/com/baeldung/tagging/TagRepository.java
index d27d48c743..44b5d461bc 100644
--- a/persistence-modules/java-mongodb/src/main/java/com/baeldung/tagging/TagRepository.java
+++ b/persistence-modules/java-mongodb/src/main/java/com/baeldung/tagging/TagRepository.java
@@ -10,8 +10,9 @@ import org.bson.Document;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
-import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
+import com.mongodb.client.MongoClient;
+import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
@@ -45,7 +46,7 @@ public class TagRepository implements Closeable {
* Instantiates a new TagRepository by opening the DB connection.
*/
public TagRepository() {
- mongoClient = new MongoClient("localhost", 27018);
+ mongoClient = MongoClients.create("mongodb://localhost:27018");
MongoDatabase database = mongoClient.getDatabase("blog");
collection = database.getCollection("posts");
}
diff --git a/persistence-modules/java-mongodb/src/test/java/com/baeldung/AppLiveTest.java b/persistence-modules/java-mongodb/src/test/java/com/baeldung/AppLiveTest.java
index 7692a37d03..2abecdbd48 100644
--- a/persistence-modules/java-mongodb/src/test/java/com/baeldung/AppLiveTest.java
+++ b/persistence-modules/java-mongodb/src/test/java/com/baeldung/AppLiveTest.java
@@ -2,71 +2,50 @@ package com.baeldung;
import static org.junit.Assert.assertEquals;
-import org.junit.After;
-import org.junit.Before;
+import org.bson.Document;
import org.junit.Test;
-import com.mongodb.BasicDBObject;
-import com.mongodb.DB;
-import com.mongodb.DBCollection;
-import com.mongodb.DBCursor;
-import com.mongodb.Mongo;
+import com.mongodb.client.FindIterable;
+import com.mongodb.client.MongoClient;
+import com.mongodb.client.MongoClients;
+import com.mongodb.client.MongoCollection;
+import com.mongodb.client.MongoCursor;
+import com.mongodb.client.MongoDatabase;
-import de.flapdoodle.embedmongo.MongoDBRuntime;
-import de.flapdoodle.embedmongo.MongodExecutable;
-import de.flapdoodle.embedmongo.MongodProcess;
-import de.flapdoodle.embedmongo.config.MongodConfig;
-import de.flapdoodle.embedmongo.distribution.Version;
-import de.flapdoodle.embedmongo.runtime.Network;
+import de.flapdoodle.embed.mongo.distribution.Version;
+import de.flapdoodle.embed.mongo.transitions.Mongod;
+import de.flapdoodle.embed.mongo.transitions.RunningMongodProcess;
+import de.flapdoodle.reverse.TransitionWalker;
public class AppLiveTest {
private static final String DB_NAME = "myMongoDb";
- private MongodExecutable mongodExe;
- private MongodProcess mongod;
- private Mongo mongo;
- private DB db;
- private DBCollection collection;
-
- @Before
- public void setup() throws Exception {
- // Creating Mongodbruntime instance
- MongoDBRuntime runtime = MongoDBRuntime.getDefaultInstance();
-
- // Creating MongodbExecutable
- mongodExe = runtime.prepare(new MongodConfig(Version.V2_0_1, 12345, Network.localhostIsIPv6()));
-
- // Starting Mongodb
- mongod = mongodExe.start();
- mongo = new Mongo("localhost", 12345);
-
- // Creating DB
- db = mongo.getDB(DB_NAME);
-
- // Creating collection Object and adding values
- collection = db.getCollection("customers");
- }
-
- @After
- public void teardown() throws Exception {
- mongod.stop();
- mongodExe.cleanup();
- }
@Test
public void testAddressPersistance() {
- BasicDBObject contact = new BasicDBObject();
- contact.put("name", "John");
- contact.put("company", "Baeldung");
+ try (TransitionWalker.ReachedState running = Mongod.instance().start(Version.V6_0_3)) {
+ try (MongoClient mongo = MongoClients.create("mongodb://" + running.current().getServerAddress().getHost() + ":" + running.current().getServerAddress().getPort())) {
+ // Creating DB
+ MongoDatabase db = mongo.getDatabase(DB_NAME);
- // Inserting document
- collection.insert(contact);
- DBCursor cursorDoc = collection.find();
- BasicDBObject contact1 = new BasicDBObject();
- while (cursorDoc.hasNext()) {
- contact1 = (BasicDBObject) cursorDoc.next();
- System.out.println(contact1);
+ // Creating collection Object and adding values
+ MongoCollection collection = db.getCollection("customers");
+
+ Document contact = new Document();
+ contact.put("name", "John");
+ contact.put("company", "Baeldung");
+
+ // Inserting document
+ collection.insertOne(contact);
+ FindIterable cursorDoc = collection.find();
+ Document contact1 = new Document();
+ final MongoCursor cursor = cursorDoc.cursor();
+ while (cursor.hasNext()) {
+ contact1 = cursor.next();
+ System.out.println(contact1);
+ }
+ assertEquals(contact1.get("name"), "John");
+ }
}
- assertEquals(contact1.get("name"), "John");
}
}
\ No newline at end of file
diff --git a/persistence-modules/java-mongodb/src/test/java/com/baeldung/bsontojson/BsonToJsonLiveTest.java b/persistence-modules/java-mongodb/src/test/java/com/baeldung/bsontojson/BsonToJsonLiveTest.java
index 0548119d7a..e2b53436b3 100644
--- a/persistence-modules/java-mongodb/src/test/java/com/baeldung/bsontojson/BsonToJsonLiveTest.java
+++ b/persistence-modules/java-mongodb/src/test/java/com/baeldung/bsontojson/BsonToJsonLiveTest.java
@@ -1,5 +1,6 @@
package com.baeldung.bsontojson;
+import static dev.morphia.query.experimental.filters.Filters.eq;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@@ -14,10 +15,12 @@ import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
-import com.mongodb.MongoClient;
+import com.mongodb.client.MongoClient;
+import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoDatabase;
import dev.morphia.Datastore;
+import dev.morphia.DeleteOptions;
import dev.morphia.Morphia;
public class BsonToJsonLiveTest {
@@ -27,9 +30,8 @@ public class BsonToJsonLiveTest {
@BeforeClass
public static void setUp() {
- Morphia morphia = new Morphia();
- morphia.mapPackage("com.baeldung.bsontojson");
- datastore = morphia.createDatastore(new MongoClient(), DB_NAME);
+ datastore = Morphia.createDatastore(MongoClients.create(), DB_NAME);
+ datastore.getMapper().mapPackage("com.baeldung.bsontojson");
datastore.ensureIndexes();
datastore.save(new Book()
@@ -44,25 +46,33 @@ public class BsonToJsonLiveTest {
@AfterClass
public static void tearDown() {
- datastore.delete(datastore.createQuery(Book.class));
+ datastore.find(Book.class)
+ .filter(eq("isbn", "isbn"))
+ .filter(eq("title", "title"))
+ .filter(eq("author", "author"))
+ .filter(eq("cost", "3.95"))
+ .delete(new DeleteOptions().multi(true));
}
@Test
public void givenBsonDocument_whenUsingStandardJsonTransformation_thenJsonDateIsObjectEpochTime() {
String json;
- try (MongoClient mongoClient = new MongoClient()) {
+ try (MongoClient mongoClient = MongoClients.create()) {
MongoDatabase mongoDatabase = mongoClient.getDatabase(DB_NAME);
Document bson = mongoDatabase.getCollection("Books").find().first();
- json = bson.toJson();
+ json = bson.toJson(JsonWriterSettings
+ .builder()
+ .dateTimeConverter(new JSONDateFormatEpochTimeConverter())
+ .build());
}
String expectedJson = "{\"_id\": \"isbn\", " +
- "\"className\": \"com.baeldung.bsontojson.Book\", " +
+ "\"_t\": \"Book\", " +
"\"title\": \"title\", " +
"\"author\": \"author\", " +
"\"publisher\": {\"_id\": {\"$oid\": \"fffffffffffffffffffffffa\"}, " +
- "\"name\": \"publisher\"}, " +
+ "\"_t\": \"Publisher\", \"name\": \"publisher\"}, " +
"\"price\": 3.95, " +
"\"publishDate\": {\"$date\": 1577898812000}}";
@@ -71,12 +81,11 @@ public class BsonToJsonLiveTest {
assertEquals(expectedJson, json);
}
-
@Test
public void givenBsonDocument_whenUsingRelaxedJsonTransformation_thenJsonDateIsObjectIsoDate() {
String json;
- try (MongoClient mongoClient = new MongoClient()) {
+ try (MongoClient mongoClient = MongoClients.create()) {
MongoDatabase mongoDatabase = mongoClient.getDatabase(DB_NAME);
Document bson = mongoDatabase.getCollection("Books").find().first();
json = bson.toJson(JsonWriterSettings
@@ -86,11 +95,11 @@ public class BsonToJsonLiveTest {
}
String expectedJson = "{\"_id\": \"isbn\", " +
- "\"className\": \"com.baeldung.bsontojson.Book\", " +
+ "\"_t\": \"Book\", " +
"\"title\": \"title\", " +
"\"author\": \"author\", " +
"\"publisher\": {\"_id\": {\"$oid\": \"fffffffffffffffffffffffa\"}, " +
- "\"name\": \"publisher\"}, " +
+ "\"_t\": \"Publisher\", \"name\": \"publisher\"}, " +
"\"price\": 3.95, " +
"\"publishDate\": {\"$date\": \"2020-01-01T17:13:32Z\"}}";
@@ -103,7 +112,7 @@ public class BsonToJsonLiveTest {
public void givenBsonDocument_whenUsingCustomJsonTransformation_thenJsonDateIsStringField() {
String json;
- try (MongoClient mongoClient = new MongoClient()) {
+ try (MongoClient mongoClient = MongoClients.create()) {
MongoDatabase mongoDatabase = mongoClient.getDatabase(DB_NAME);
Document bson = mongoDatabase.getCollection("Books").find().first();
json = bson.toJson(JsonWriterSettings
@@ -113,11 +122,11 @@ public class BsonToJsonLiveTest {
}
String expectedJson = "{\"_id\": \"isbn\", " +
- "\"className\": \"com.baeldung.bsontojson.Book\", " +
+ "\"_t\": \"Book\", " +
"\"title\": \"title\", " +
"\"author\": \"author\", " +
"\"publisher\": {\"_id\": {\"$oid\": \"fffffffffffffffffffffffa\"}, " +
- "\"name\": \"publisher\"}, " +
+ "\"_t\": \"Publisher\", \"name\": \"publisher\"}, " +
"\"price\": 3.95, " +
"\"publishDate\": \"2020-01-01T17:13:32Z\"}";
diff --git a/persistence-modules/java-mongodb/src/test/java/com/baeldung/bsontojson/JSONDateFormatEpochTimeConverter.java b/persistence-modules/java-mongodb/src/test/java/com/baeldung/bsontojson/JSONDateFormatEpochTimeConverter.java
new file mode 100644
index 0000000000..7f3a4f936f
--- /dev/null
+++ b/persistence-modules/java-mongodb/src/test/java/com/baeldung/bsontojson/JSONDateFormatEpochTimeConverter.java
@@ -0,0 +1,18 @@
+package com.baeldung.bsontojson;
+
+import org.bson.json.Converter;
+import org.bson.json.StrictJsonWriter;
+
+/**
+ * Convertor to epoch time
+ */
+public class JSONDateFormatEpochTimeConverter implements Converter {
+
+ @Override
+ public void convert(Long value, StrictJsonWriter writer) {
+ writer.writeStartObject();
+ writer.writeName("$date");
+ writer.writeNumber(String.valueOf(value));
+ writer.writeEndObject();
+ }
+}
diff --git a/persistence-modules/java-mongodb/src/test/java/com/baeldung/mongo/CollectionExistenceLiveTest.java b/persistence-modules/java-mongodb/src/test/java/com/baeldung/mongo/CollectionExistenceLiveTest.java
index ad839d1219..5be97bcb25 100644
--- a/persistence-modules/java-mongodb/src/test/java/com/baeldung/mongo/CollectionExistenceLiveTest.java
+++ b/persistence-modules/java-mongodb/src/test/java/com/baeldung/mongo/CollectionExistenceLiveTest.java
@@ -8,8 +8,8 @@ import org.bson.Document;
import org.junit.Before;
import org.junit.Test;
-import com.mongodb.DB;
-import com.mongodb.MongoClient;
+import com.mongodb.client.MongoClient;
+import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
@@ -22,7 +22,7 @@ public class CollectionExistenceLiveTest {
@Before
public void setup() {
if (mongoClient == null) {
- mongoClient = new MongoClient("localhost", 27017);
+ mongoClient = MongoClients.create("mongodb://localhost:27017");
databaseName = "baeldung";
testCollectionName = "student";
@@ -58,28 +58,16 @@ public class CollectionExistenceLiveTest {
}
- @Test
- public void givenCollectionExists_whenCollectionAlreadyExists_thenCheckingForCollectionExistence() {
-
- DB db = mongoClient.getDB(databaseName);
- Boolean collectionStatus = db.collectionExists(testCollectionName);
-
- Boolean expectedStatus = true;
- assertEquals(expectedStatus, collectionStatus);
-
- }
-
@Test
public void givenListCollectionNames_whenCollectionAlreadyExists_thenCheckingForCollectionExistence() {
MongoDatabase database = mongoClient.getDatabase(databaseName);
boolean collectionExists = database.listCollectionNames()
- .into(new ArrayList())
+ .into(new ArrayList<>())
.contains(testCollectionName);
Boolean expectedStatus = true;
assertEquals(expectedStatus, collectionExists);
-
}
@Test
@@ -88,7 +76,7 @@ public class CollectionExistenceLiveTest {
MongoDatabase database = mongoClient.getDatabase(databaseName);
MongoCollection collection = database.getCollection(testCollectionName);
- Boolean collectionExists = collection.count() > 0 ? true : false;
+ Boolean collectionExists = collection.countDocuments() > 0 ? true : false;
Boolean expectedStatus = false;
assertEquals(expectedStatus, collectionExists);
diff --git a/persistence-modules/java-mongodb/src/test/java/com/baeldung/morphia/MorphiaIntegrationTest.java b/persistence-modules/java-mongodb/src/test/java/com/baeldung/morphia/MorphiaIntegrationTest.java
index f508c5f525..d702c691d6 100644
--- a/persistence-modules/java-mongodb/src/test/java/com/baeldung/morphia/MorphiaIntegrationTest.java
+++ b/persistence-modules/java-mongodb/src/test/java/com/baeldung/morphia/MorphiaIntegrationTest.java
@@ -2,39 +2,44 @@ package com.baeldung.morphia;
import static dev.morphia.aggregation.Group.grouping;
import static dev.morphia.aggregation.Group.push;
+import static dev.morphia.query.experimental.filters.Filters.eq;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.Iterator;
import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.StreamSupport;
import org.bson.types.ObjectId;
import org.junit.BeforeClass;
-import org.junit.Ignore;
import org.junit.Test;
import com.baeldung.morphia.domain.Author;
import com.baeldung.morphia.domain.Book;
import com.baeldung.morphia.domain.Publisher;
-import com.mongodb.MongoClient;
+import com.mongodb.client.MongoClients;
+import com.mongodb.client.model.ReturnDocument;
import dev.morphia.Datastore;
+import dev.morphia.DeleteOptions;
+import dev.morphia.ModifyOptions;
import dev.morphia.Morphia;
+import dev.morphia.query.FindOptions;
import dev.morphia.query.Query;
-import dev.morphia.query.UpdateOperations;
+import dev.morphia.query.experimental.updates.UpdateOperators;
-@Ignore
public class MorphiaIntegrationTest {
private static Datastore datastore;
private static ObjectId id = new ObjectId();
- @BeforeClass
+ @BeforeClass
public static void setUp() {
- Morphia morphia = new Morphia();
- morphia.mapPackage("com.baeldung.morphia");
- datastore = morphia.createDatastore(new MongoClient(), "library");
+ datastore = Morphia.createDatastore(MongoClients.create(), "library");
+ datastore.getMapper().mapPackage("com.baeldung.morphia");
datastore.ensureIndexes();
}
@@ -47,11 +52,11 @@ public class MorphiaIntegrationTest {
datastore.save(companionBook);
datastore.save(book);
- List books = datastore.createQuery(Book.class)
- .field("title")
- .contains("Learning Java")
- .find()
- .toList();
+ Query booksQuery = datastore.find(Book.class)
+ .filter(eq("title", "Learning Java"));
+ List books = StreamSupport
+ .stream(booksQuery.spliterator(), true)
+ .collect(Collectors.toList());
assertEquals(1, books.size());
assertEquals(book, books.get(0));
}
@@ -61,19 +66,13 @@ public class MorphiaIntegrationTest {
Publisher publisher = new Publisher(id, "Awsome Publisher");
Book book = new Book("9781565927186", "Learning Java", "Tom Kirkman", 3.95, publisher);
datastore.save(book);
- Query query = datastore.createQuery(Book.class)
- .field("title")
- .contains("Learning Java");
- UpdateOperations updates = datastore.createUpdateOperations(Book.class)
- .inc("price", 1);
- datastore.update(query, updates);
- List books = datastore.createQuery(Book.class)
- .field("title")
- .contains("Learning Java")
- .find()
- .toList();
- assertEquals(4.95, books.get(0)
- .getCost());
+
+ final Book execute = datastore.find(Book.class)
+ .filter(eq("title", "Learning Java"))
+ .modify(UpdateOperators.set("price", 4.95))
+ .execute(new ModifyOptions().returnDocument(ReturnDocument.AFTER));
+
+ assertEquals(4.95, execute.getCost());
}
@Test
@@ -81,16 +80,12 @@ public class MorphiaIntegrationTest {
Publisher publisher = new Publisher(id, "Awsome Publisher");
Book book = new Book("9781565927186", "Learning Java", "Tom Kirkman", 3.95, publisher);
datastore.save(book);
- Query query = datastore.createQuery(Book.class)
- .field("title")
- .contains("Learning Java");
- datastore.delete(query);
- List books = datastore.createQuery(Book.class)
- .field("title")
- .contains("Learning Java")
- .find()
- .toList();
- assertEquals(0, books.size());
+ datastore.find(Book.class)
+ .filter(eq("title", "Learning Java"))
+ .delete(new DeleteOptions().multi(true));
+ Query books = datastore.find(Book.class)
+ .filter(eq("title", "Learning Java"));
+ assertFalse(books.iterator().hasNext());
}
@Test
@@ -107,7 +102,6 @@ public class MorphiaIntegrationTest {
.out(Author.class);
assertTrue(authors.hasNext());
-
}
@Test
@@ -115,17 +109,12 @@ public class MorphiaIntegrationTest {
Publisher publisher = new Publisher(id, "Awsome Publisher");
Book book = new Book("9781565927186", "Learning Java", "Tom Kirkman", 3.95, publisher);
datastore.save(book);
- List books = datastore.createQuery(Book.class)
- .field("title")
- .contains("Learning Java")
- .project("title", true)
- .find()
- .toList();
- assertEquals(books.size(), 1);
- assertEquals("Learning Java", books.get(0)
- .getTitle());
- assertNull(books.get(0)
- .getAuthor());
+ List books = datastore.find(Book.class)
+ .filter(eq("title", "Learning Java"))
+ .iterator(new FindOptions().projection().include("title")).toList();
+ assertEquals( 1, books.size());
+ assertEquals("Learning Java", books.get(0).getTitle());
+ assertNull(books.get(0).getAuthor());
}
}
diff --git a/persistence-modules/java-mongodb/src/test/java/com/baeldung/tagging/TaggingLiveTest.java b/persistence-modules/java-mongodb/src/test/java/com/baeldung/tagging/TaggingLiveTest.java
index edd8e22775..2a7afbd753 100644
--- a/persistence-modules/java-mongodb/src/test/java/com/baeldung/tagging/TaggingLiveTest.java
+++ b/persistence-modules/java-mongodb/src/test/java/com/baeldung/tagging/TaggingLiveTest.java
@@ -100,9 +100,7 @@ public class TaggingLiveTest {
results.forEach(System.out::println);
Assert.assertEquals(1, results.size());
- results.forEach(post -> {
- Assert.assertFalse(post.getTags().contains("MongoDB"));
- });
+ results.forEach(post -> Assert.assertFalse(post.getTags().contains("MongoDB")));
}
/**
diff --git a/persistence-modules/java-mongodb/src/test/java/com/baeldung/update/UpdateFieldLiveTest.java b/persistence-modules/java-mongodb/src/test/java/com/baeldung/update/UpdateFieldLiveTest.java
index 47114e1f1a..ef725a9435 100644
--- a/persistence-modules/java-mongodb/src/test/java/com/baeldung/update/UpdateFieldLiveTest.java
+++ b/persistence-modules/java-mongodb/src/test/java/com/baeldung/update/UpdateFieldLiveTest.java
@@ -8,7 +8,8 @@ import org.bson.Document;
import org.junit.BeforeClass;
import org.junit.Test;
-import com.mongodb.MongoClient;
+import com.mongodb.client.MongoClient;
+import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
@@ -27,7 +28,7 @@ public class UpdateFieldLiveTest {
@BeforeClass
public static void setup() {
if (mongoClient == null) {
- mongoClient = new MongoClient("localhost", 27017);
+ mongoClient = MongoClients.create("mongodb://localhost:27017");
db = mongoClient.getDatabase("baeldung");
collection = db.getCollection("student");
diff --git a/persistence-modules/java-mongodb/src/test/java/com/baeldung/update/UpdateMultipleFieldsLiveTest.java b/persistence-modules/java-mongodb/src/test/java/com/baeldung/update/UpdateMultipleFieldsLiveTest.java
index d06de23423..19edda5870 100644
--- a/persistence-modules/java-mongodb/src/test/java/com/baeldung/update/UpdateMultipleFieldsLiveTest.java
+++ b/persistence-modules/java-mongodb/src/test/java/com/baeldung/update/UpdateMultipleFieldsLiveTest.java
@@ -8,7 +8,8 @@ import org.junit.Before;
import org.junit.Test;
import com.mongodb.BasicDBObject;
-import com.mongodb.MongoClient;
+import com.mongodb.client.MongoClient;
+import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
@@ -23,7 +24,7 @@ public class UpdateMultipleFieldsLiveTest {
@Before
public void setup() {
if (mongoClient == null) {
- mongoClient = new MongoClient("localhost", 27017);
+ mongoClient = MongoClients.create("mongodb://localhost:27017");
db = mongoClient.getDatabase("baeldung");
collection = db.getCollection("employee");
diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml
index 8c191b0abd..9606da4594 100644
--- a/persistence-modules/pom.xml
+++ b/persistence-modules/pom.xml
@@ -43,7 +43,8 @@
java-jpa
java-jpa-2
java-jpa-3
- java-mongodb
+
+
java-mongodb-2
java-mongodb-3
java-mongodb-queries
diff --git a/pom.xml b/pom.xml
index 8cda06c6b7..651ed36d1a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1014,7 +1014,7 @@
spring-5-webflux-2
spring-activiti
spring-batch-2
- spring-boot-modules/spring-caching-2
+ spring-boot-modules/spring-caching-2
spring-core-2
spring-core-3
spring-core-5
@@ -1034,6 +1034,7 @@
tensorflow-java
xstream
webrtc
+ persistence-modules/java-mongodb
messaging-modules/spring-apache-camel
@@ -1249,7 +1250,7 @@
spring-5-webflux-2
spring-activiti
spring-batch-2
- spring-boot-modules/spring-caching-2
+ spring-boot-modules/spring-caching-2
spring-core-2
spring-core-3
spring-core-5
@@ -1269,6 +1270,7 @@
tensorflow-java
xstream
webrtc
+ persistence-modules/java-mongodb
libraries-2
messaging-modules/spring-apache-camel