BAEL-5374: push Into Array in MongoDB (#11916)
This commit is contained in:
parent
f2b3b8e5fe
commit
fee01d60fb
|
@ -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<Document> 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<Document> 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<Document> 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();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -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<Document> 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();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue