From fee01d60fbd97dd80cc1ada797ff6e0fb8c11f28 Mon Sep 17 00:00:00 2001 From: Kapil Khandelwal Date: Fri, 11 Mar 2022 00:20:08 +0530 Subject: [PATCH] BAEL-5374: push Into Array in MongoDB (#11916) --- .../com/baeldung/mongo/PushOperations.java | 99 +++++++++++++++++++ .../baeldung/mongo/PushOperationLiveTest.java | 92 +++++++++++++++++ 2 files changed, 191 insertions(+) create mode 100644 persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/PushOperations.java create mode 100644 persistence-modules/java-mongodb/src/test/java/com/baeldung/mongo/PushOperationLiveTest.java diff --git a/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/PushOperations.java b/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/PushOperations.java new file mode 100644 index 0000000000..fa1f9ddc96 --- /dev/null +++ b/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/PushOperations.java @@ -0,0 +1,99 @@ +package com.baeldung.mongo; + +import java.io.FileNotFoundException; +import java.io.IOException; + +import org.bson.Document; + +import com.mongodb.BasicDBObject; +import com.mongodb.DBObject; +import com.mongodb.MongoClient; +import com.mongodb.client.MongoCollection; +import com.mongodb.client.MongoDatabase; +import com.mongodb.client.model.Filters; +import com.mongodb.client.model.Updates; +import com.mongodb.client.result.UpdateResult; + +public class PushOperations { + + private static MongoClient mongoClient; + private static String testCollectionName; + private static String databaseName; + + public static void setUp() { + if (mongoClient == null) { + mongoClient = new MongoClient("localhost", 27017); + } + + databaseName = "baeldung"; + testCollectionName = "orders"; + + } + + public static void pushOperationUsingDBObject() { + + MongoDatabase database = mongoClient.getDatabase(databaseName); + MongoCollection collection = database.getCollection(testCollectionName); + DBObject listItem = new BasicDBObject("items", new BasicDBObject("itemName", "PIZZA MANIA").append("quantity", 1) + .append("price", 800)); + BasicDBObject searchFilter = new BasicDBObject("customerId", 1023); + BasicDBObject updateQuery = new BasicDBObject(); + updateQuery.append("$push", listItem); + UpdateResult updateResult = collection.updateOne(searchFilter, updateQuery); + + System.out.println("updateResult:- " + updateResult); + } + + public static void pushOperationUsingDocument() { + + MongoDatabase database = mongoClient.getDatabase(databaseName); + MongoCollection collection = database.getCollection(testCollectionName); + + Document item = new Document().append("itemName", "PIZZA MANIA") + .append("quantity", 1) + .append("price", 800); + UpdateResult updateResult = collection.updateOne(Filters.eq("customerId", 1023), Updates.push("items", item)); + + System.out.println("updateResult:- " + updateResult); + } + + public static void addToSetOperation() { + + MongoDatabase database = mongoClient.getDatabase(databaseName); + MongoCollection collection = database.getCollection(testCollectionName); + + Document item = new Document().append("itemName", "PIZZA MANIA") + .append("quantity", 1) + .append("price", 800); + UpdateResult updateResult = collection.updateOne(Filters.eq("customerId", 1023), Updates.addToSet("items", item)); + System.out.println("updateResult:- " + updateResult); + } + + public static void main(String args[]) { + + // + // Connect to cluster (default is localhost:27017) + // + setUp(); + + // + // Push document into the array using DBObject + // + + pushOperationUsingDBObject(); + + // + // Push document into the array using Document. + // + + pushOperationUsingDocument(); + + // + // Push document into the array using addToSet operator. + // + addToSetOperation(); + + } + +} + diff --git a/persistence-modules/java-mongodb/src/test/java/com/baeldung/mongo/PushOperationLiveTest.java b/persistence-modules/java-mongodb/src/test/java/com/baeldung/mongo/PushOperationLiveTest.java new file mode 100644 index 0000000000..bd8523b301 --- /dev/null +++ b/persistence-modules/java-mongodb/src/test/java/com/baeldung/mongo/PushOperationLiveTest.java @@ -0,0 +1,92 @@ +package com.baeldung.mongo; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; + +import org.bson.Document; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +import com.mongodb.BasicDBObject; +import com.mongodb.DBObject; +import com.mongodb.MongoClient; +import com.mongodb.client.MongoCollection; +import com.mongodb.client.MongoDatabase; +import com.mongodb.client.model.Filters; +import com.mongodb.client.model.Updates; +import com.mongodb.client.result.UpdateResult; + +public class PushOperationLiveTest { + + private static MongoClient mongoClient; + private static MongoDatabase db; + private static MongoCollection collection; + + @BeforeClass + public static void setup() { + if (mongoClient == null) { + mongoClient = new MongoClient("localhost", 27017); + db = mongoClient.getDatabase("baeldung"); + collection = db.getCollection("orders"); + + collection.insertOne( + Document.parse("{\n" + " \"customerId\": 1023,\n" + " \"orderTimestamp\": NumberLong(\"1646460073000\"),\n" + " \"shippingDestination\": \"336, Street No.1 Pawai Mumbai\",\n" + " \"purchaseOrder\": 1000,\n" + + " \"contactNumber\":\"9898987676\",\n" + " \"items\": [ \n" + " {\n" + " \"itemName\": \"BERGER\",\n" + " \"quantity\": 1,\n" + " \"price\": 500\n" + " },\n" + + " {\n" + " \"itemName\": \"VEG PIZZA\",\n" + " \"quantity\": 1,\n" + " \"price\": 800\n" + " } \n" + " ]\n" + " }")); + } + } + + @Test + public void givenOrderCollection_whenPushOperationUsingDBObject_thenCheckingForDocument() { + + DBObject listItem = new BasicDBObject("items", new BasicDBObject("itemName", "PIZZA MANIA").append("quantity", 1) + .append("price", 800)); + BasicDBObject searchFilter = new BasicDBObject("customerId", 1023); + BasicDBObject updateQuery = new BasicDBObject(); + updateQuery.append("$push", listItem); + UpdateResult updateResult = collection.updateOne(searchFilter, updateQuery); + + Document orderDetail = collection.find(Filters.eq("customerId", 1023)) + .first(); + assertNotNull(orderDetail); + assertFalse(orderDetail.isEmpty()); + + } + + @Test + public void givenOrderCollection_whenPushOperationUsingDocument_thenCheckingForDocument() { + + Document item = new Document().append("itemName", "PIZZA MANIA") + .append("quantity", 1) + .append("price", 800); + UpdateResult updateResult = collection.updateOne(Filters.eq("customerId", 1023), Updates.push("items", item)); + + Document orderDetail = collection.find(Filters.eq("customerId", 1023)) + .first(); + assertNotNull(orderDetail); + assertFalse(orderDetail.isEmpty()); + + } + + @Test + public void givenOrderCollection_whenAddToSetOperation_thenCheckingForDocument() { + + Document item = new Document().append("itemName", "PIZZA MANIA") + .append("quantity", 1) + .append("price", 800); + UpdateResult updateResult = collection.updateOne(Filters.eq("customerId", 1023), Updates.addToSet("items", item)); + + Document orderDetail = collection.find(Filters.eq("customerId", 1023)) + .first(); + assertNotNull(orderDetail); + assertFalse(orderDetail.isEmpty()); + } + + @AfterClass + public static void cleanUp() { + mongoClient.close(); + } + +} +