BAEL-5401: Update Fields of Documents in MongoDB Using the Java Driver (#11889)
This commit is contained in:
parent
28519a494c
commit
dafb4d1f58
|
@ -0,0 +1,128 @@
|
|||
package com.baeldung.mongo.update;
|
||||
|
||||
import org.bson.Document;
|
||||
|
||||
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.FindOneAndReplaceOptions;
|
||||
import com.mongodb.client.model.FindOneAndUpdateOptions;
|
||||
import com.mongodb.client.model.ReturnDocument;
|
||||
import com.mongodb.client.model.Updates;
|
||||
import com.mongodb.client.result.UpdateResult;
|
||||
|
||||
public class UpdateFields {
|
||||
|
||||
private static MongoClient mongoClient;
|
||||
private static MongoDatabase database;
|
||||
private static MongoCollection<Document> collection;
|
||||
|
||||
public static void updateOne() {
|
||||
|
||||
UpdateResult updateResult = collection.updateOne(Filters.eq("student_name", "Paul Starc"), Updates.set("address", "Hostel 2"));
|
||||
|
||||
System.out.println("updateResult:- " + updateResult);
|
||||
}
|
||||
|
||||
public static void updateMany() {
|
||||
|
||||
UpdateResult updateResult = collection.updateMany(Filters.lt("age", 20), Updates.set("Review", true));
|
||||
|
||||
System.out.println("updateResult:- " + updateResult);
|
||||
|
||||
}
|
||||
|
||||
public static void replaceOne() {
|
||||
|
||||
Document replaceDocument = new Document();
|
||||
replaceDocument.append("student_id", 8764)
|
||||
.append("student_name", "Paul Starc")
|
||||
.append("address", "Hostel 3")
|
||||
.append("age", 18)
|
||||
.append("roll_no", 199406);
|
||||
|
||||
UpdateResult updateResult = collection.replaceOne(Filters.eq("student_id", 8764), replaceDocument);
|
||||
|
||||
System.out.println("updateResult:- " + updateResult);
|
||||
|
||||
}
|
||||
|
||||
public static void findOneAndReplace() {
|
||||
|
||||
Document replaceDocument = new Document();
|
||||
replaceDocument.append("student_id", 8764)
|
||||
.append("student_name", "Paul Starc")
|
||||
.append("address", "Hostel 4")
|
||||
.append("age", 18)
|
||||
.append("roll_no", 199406);
|
||||
Document sort = new Document("roll_no", 1);
|
||||
Document projection = new Document("_id", 0).append("student_id", 1)
|
||||
.append("address", 1);
|
||||
Document resultDocument = collection.findOneAndReplace(Filters.eq("student_id", 8764), replaceDocument, new FindOneAndReplaceOptions().upsert(true)
|
||||
.sort(sort)
|
||||
.projection(projection)
|
||||
.returnDocument(ReturnDocument.AFTER));
|
||||
|
||||
System.out.println("resultDocument:- " + resultDocument);
|
||||
|
||||
}
|
||||
|
||||
public static void findOneAndUpdate() {
|
||||
|
||||
Document sort = new Document("roll_no", 1);
|
||||
Document projection = new Document("_id", 0).append("student_id", 1)
|
||||
.append("address", 1);
|
||||
Document resultDocument = collection.findOneAndUpdate(Filters.eq("student_id", 8764), Updates.inc("roll_no", 5), new FindOneAndUpdateOptions().upsert(true)
|
||||
.sort(sort)
|
||||
.projection(projection)
|
||||
.returnDocument(ReturnDocument.AFTER));
|
||||
|
||||
System.out.println("resultDocument:- " + resultDocument);
|
||||
}
|
||||
|
||||
public static void setup() {
|
||||
if (mongoClient == null) {
|
||||
mongoClient = new MongoClient("localhost", 27017);
|
||||
database = mongoClient.getDatabase("baeldung");
|
||||
collection = database.getCollection("student");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
//
|
||||
// Connect to cluster (default is localhost:27017)
|
||||
//
|
||||
setup();
|
||||
|
||||
//
|
||||
// Update a document using updateOne method
|
||||
//
|
||||
updateOne();
|
||||
|
||||
//
|
||||
// Update documents using updateMany method
|
||||
//
|
||||
updateMany();
|
||||
|
||||
//
|
||||
// replace a document using replaceOne method
|
||||
//
|
||||
replaceOne();
|
||||
|
||||
//
|
||||
// replace a document using findOneAndReplace method
|
||||
//
|
||||
findOneAndReplace();
|
||||
|
||||
//
|
||||
// Update a document using findOneAndUpdate method
|
||||
//
|
||||
findOneAndUpdate();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,143 @@
|
|||
package com.baeldung.update;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
import org.bson.Document;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
|
||||
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.FindOneAndReplaceOptions;
|
||||
import com.mongodb.client.model.FindOneAndUpdateOptions;
|
||||
import com.mongodb.client.model.ReturnDocument;
|
||||
import com.mongodb.client.model.Updates;
|
||||
import com.mongodb.client.result.UpdateResult;
|
||||
|
||||
public class UpdateFieldLiveTest {
|
||||
|
||||
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("student");
|
||||
|
||||
collection.insertOne(Document.parse("{ \"student_id\": 8764,\"student_name\": \"Paul Starc\",\"address\": \"Hostel 1\",\"age\": 16,\"roll_no\":199406}"));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateOne() {
|
||||
|
||||
UpdateResult updateResult = collection.updateOne(Filters.eq("student_name", "Paul Starc"), Updates.set("address", "Hostel 2"));
|
||||
|
||||
Document studentDetail = collection.find(Filters.eq("student_name", "Paul Starc"))
|
||||
.first();
|
||||
assertNotNull(studentDetail);
|
||||
assertFalse(studentDetail.isEmpty());
|
||||
|
||||
String address = studentDetail.getString("address");
|
||||
String expectedAdderess = "Hostel 2";
|
||||
|
||||
assertEquals(expectedAdderess, address);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateMany() {
|
||||
|
||||
UpdateResult updateResult = collection.updateMany(Filters.lt("age", 20), Updates.set("Review", true));
|
||||
|
||||
Document studentDetail = collection.find(Filters.eq("student_name", "Paul Starc"))
|
||||
.first();
|
||||
assertNotNull(studentDetail);
|
||||
assertFalse(studentDetail.isEmpty());
|
||||
|
||||
Boolean review = studentDetail.getBoolean("Review");
|
||||
Boolean expectedAdderess = true;
|
||||
|
||||
assertEquals(expectedAdderess, review);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void replaceOne() {
|
||||
|
||||
Document replaceDocument = new Document();
|
||||
replaceDocument.append("student_id", 8764)
|
||||
.append("student_name", "Paul Starc")
|
||||
.append("address", "Hostel 3")
|
||||
.append("age", 18)
|
||||
.append("roll_no", 199406);
|
||||
|
||||
UpdateResult updateResult = collection.replaceOne(Filters.eq("student_id", 8764), replaceDocument);
|
||||
|
||||
Document studentDetail = collection.find(Filters.eq("student_name", "Paul Starc"))
|
||||
.first();
|
||||
assertNotNull(studentDetail);
|
||||
assertFalse(studentDetail.isEmpty());
|
||||
|
||||
Integer age = studentDetail.getInteger("age");
|
||||
Integer expectedAge = 18;
|
||||
|
||||
assertEquals(expectedAge, age);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void findOneAndReplace() {
|
||||
|
||||
Document replaceDocument = new Document();
|
||||
replaceDocument.append("student_id", 8764)
|
||||
.append("student_name", "Paul Starc")
|
||||
.append("address", "Hostel 4")
|
||||
.append("age", 18)
|
||||
.append("roll_no", 199406);
|
||||
Document sort = new Document("roll_no", 1);
|
||||
Document projection = new Document("_id", 0).append("student_id", 1)
|
||||
.append("address", 1);
|
||||
Document resultDocument = collection.findOneAndReplace(Filters.eq("student_id", 8764), replaceDocument, new FindOneAndReplaceOptions().upsert(true)
|
||||
.sort(sort)
|
||||
.projection(projection)
|
||||
.returnDocument(ReturnDocument.AFTER));
|
||||
|
||||
Document studentDetail = collection.find(Filters.eq("student_name", "Paul Starc"))
|
||||
.first();
|
||||
assertNotNull(studentDetail);
|
||||
assertFalse(studentDetail.isEmpty());
|
||||
|
||||
Integer age = studentDetail.getInteger("age");
|
||||
Integer expectedAge = 18;
|
||||
|
||||
assertEquals(expectedAge, age);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void findOneAndUpdate() {
|
||||
|
||||
Document sort = new Document("roll_no", 1);
|
||||
Document projection = new Document("_id", 0).append("student_id", 1)
|
||||
.append("address", 1);
|
||||
Document resultDocument = collection.findOneAndUpdate(Filters.eq("student_id", 8764), Updates.inc("roll_no", 5), new FindOneAndUpdateOptions().upsert(true)
|
||||
.sort(sort)
|
||||
.projection(projection)
|
||||
.returnDocument(ReturnDocument.AFTER));
|
||||
|
||||
Document studentDetail = collection.find(Filters.eq("student_name", "Paul Starc"))
|
||||
.first();
|
||||
assertNotNull(studentDetail);
|
||||
assertFalse(studentDetail.isEmpty());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue