Java MongoDB Update Multiple Documents

In this tutorial, we will learn how to update multiple documents in a MongoDB collection using Java. MongoDB allows you to update several documents at once using the updateMany() method. We will use the MongoDB Java Driver to connect to MongoDB, update multiple documents, and verify the changes.

What You Will Learn:

  • How to connect Java to MongoDB.
  • How to update multiple documents in a MongoDB collection.
  • How to verify the updated documents.

Technologies Used:

  • JDK: Version 21 or later (Recommended: Latest version)
  • MongoDB: Version 6.0 or later
  • MongoDB Java Driver: Version 5.1.4 (latest)

Step 1: Add MongoDB Java Driver Dependency

To connect your Java application to MongoDB, you need to add the MongoDB Java Driver.

For Maven Users:

Add the following dependency to your pom.xml file:

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver-sync</artifactId>
    <version>5.1.4</version>
</dependency>

For Gradle Users:

Add the following line to your build.gradle file:

implementation 'org.mongodb:mongodb-driver-sync:5.1.4'

If you are not using Maven or Gradle, download the MongoDB Java Driver JAR file and manually add it to your classpath.

Step 2: Write Java Code to Update Multiple Documents

Here’s a simple Java program that connects to MongoDB and updates multiple documents in a collection.

Code Example:

import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import com.mongodb.client.model.Updates;
import com.mongodb.client.model.Filters;

public class MongoDBUpdateMultipleDocumentsExample {

    // MongoDB connection URI
    private static final String URI = "mongodb://localhost:27017";

    public static void main(String[] args) {
        // Step 1: Create a MongoClient instance to connect to MongoDB
        try (MongoClient mongoClient = MongoClients.create(URI)) {
            
            // Step 2: Access the database (it will create it if it doesn't exist)
            MongoDatabase database = mongoClient.getDatabase("mydb");

            // Step 3: Access the collection (it will create it if it doesn't exist)
            MongoCollection<Document> collection = database.getCollection("employees");

            // Step 4: Update multiple documents where the department is "HR"
            collection.updateMany(
                Filters.eq("department", "HR"), // Filter to find the documents
                Updates.set("department", "Human Resources") // Update the department field
            );

            // Step 5: Confirm document updates
            System.out.println("Multiple documents updated in the 'employees' collection.");
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Explanation with Code Snippets:

  • Step 1: Create a MongoClient Instance The MongoClient is used to establish a connection to MongoDB using the connection string mongodb://localhost:27017.

    try (MongoClient mongoClient = MongoClients.create(URI)) {
    

    This block ensures the client is closed automatically after the operation is complete.

  • Step 2: Access the Database Use the getDatabase() method to access the mydb database. If the database does not exist, MongoDB will create it automatically.

    MongoDatabase database = mongoClient.getDatabase("mydb");
    
  • Step 3: Access the Collection Use getCollection() to access the employees collection. MongoDB will create this collection if it does not already exist.

    MongoCollection<Document> collection = database.getCollection("employees");
    
  • Step 4: Update Multiple Documents The updateMany() method is used to update several documents at once. Here, we find documents where department = "HR" and update the department field to "Human Resources".

    collection.updateMany(
        Filters.eq("department", "HR"),
        Updates.set("department", "Human Resources")
    );
    
    • Filters.eq(): This is used to specify the documents you want to update by filtering with a specific field (in this case, "department": "HR").
    • Updates.set(): This is used to update the value of a specific field (in this case, updating "department" to "Human Resources").
  • Step 5: Confirm Document Update Print a confirmation message to the console indicating that multiple documents have been updated.

    System.out.println("Multiple documents updated in the 'employees' collection.");
    

Step 3: Run the Java Program

After writing the code, run the program in your IDE or from the command line. If the update was successful, you will see the following output:

Multiple documents updated in the 'employees' collection.

If there is an issue, such as MongoDB not running or a connection problem, an error message will be displayed.

Step 4: Verify the Updated Documents

To verify the updated documents, use the MongoDB shell or a MongoDB client tool. In the MongoDB shell, you can use the following commands:

use mydb
db.employees.find({ "department": "Human Resources" })

You should see the updated documents where the department field is now set to "Human Resources".

Conclusion

In this tutorial, you learned how to:

  • Connect Java to MongoDB using the MongoDB Java Driver.
  • Update multiple documents in a MongoDB collection using the updateMany() method.
  • Verify the updated documents using the MongoDB shell.

This example can be expanded by applying more complex filters or updating multiple fields simultaneously. Using updateMany() is especially useful when you need to modify large sets of documents in one operation.

Comments