Update

Import restaurants collection

wget https://www.dropbox.com/s/bfi06m1fvemzj69/primer-dataset-small.json

mongoimport --uri "mongodb+srv://admatic:admatic123@admatic-cluster-7qyyr.mongodb.net/admatic-db" \
    --collection restaurants --drop --file primer-dataset-small.json
2019-02-25T16:23:06.163+0000    connected to: localhost
2019-02-25T16:23:06.323+0000    dropping: admatic-db.restaurants
2019-02-25T16:23:06.696+0000    imported 10 documents

Code

mkdir -p src/main/java/com/admatic/primer

vim src/main/java/com/admatic/primer/UpdatePrimer.java
package com.admatic.primer;

import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.result.UpdateResult;
import org.bson.Document;

import java.util.logging.Level;
import java.util.logging.Logger;

import static java.util.Arrays.asList;


public class UpdatePrimer {

    private static void updateTopLevelFields(MongoDatabase db) {
        UpdateResult updateResult = db.getCollection("restaurants").updateOne(new Document("name", "Riviera Caterer"),
                new Document("$set", new Document("cuisine", "American (New)"))
                        .append("$currentDate", new Document("lastModified", true)));
        System.out.println("Modified Count = " + updateResult.getModifiedCount());
    }

    private static void updateEmbeddedField(MongoDatabase db) {
        UpdateResult updateResult = db.getCollection("restaurants").updateOne(new Document("restaurant_id", "40356018"),
                new Document("$set", new Document("address.street", "East 31st Street")));
        System.out.println("Modified Count = " + updateResult.getModifiedCount());
    }


    private static void updateMultipleDocuments(MongoDatabase db) {
        UpdateResult updateResult = db.getCollection("restaurants").updateMany(new Document("cuisine", "American"),
                new Document("$set", new Document("cuisine", "American (New)"))
                        .append("$currentDate", new Document("lastModified", true)));
        System.out.println("Modified Count = " + updateResult.getModifiedCount());
    }

    private static void replaceDocument(MongoDatabase db) {
        UpdateResult updateResult = db.getCollection("restaurants").replaceOne(new Document("restaurant_id", "40356018"),
                new Document("address",
                        new Document()
                                .append("street", "2 Avenue")
                                .append("zipcode", "10075")
                                .append("building", "1480")
                                .append("coord", asList(-73.9557413, 40.7720266)))
                        .append("name", "Vella 2"));
        System.out.println("Modified Count = " + updateResult.getModifiedCount());
    }

    public static void main(final String[] args) {
        Logger mongoLogger = Logger.getLogger("org.mongodb.driver");
        mongoLogger.setLevel(Level.SEVERE);

        MongoClient mongoClient;

        if (args.length == 0) {
            mongoClient = MongoClients.create();
        } else {
            mongoClient = MongoClients.create(args[0]);
        }

        MongoDatabase database = mongoClient.getDatabase("admatic-db");

        switch (args[1]) {
            case "0":
                System.out.println("updateTopLevelFields");
                updateTopLevelFields(database);
                break;
            case "1":
                System.out.println("updateEmbeddedField");
                updateEmbeddedField(database);
                break;

            case "2":
                System.out.println("updateMultipleDocuments");
                updateMultipleDocuments(database);
                break;

            case "3":
                System.out.println("replaceDocument");
                replaceDocument(database);
                break;

            default:
                System.out.println("Enter an option between 0 and 3");
        }

        mongoClient.close();
    }
}

Compile

mvn compile

Run

Update Top-Level Fields

db.getCollection("restaurants").updateOne(new Document("name", "Riviera Caterer"),
                 new Document("$set", new Document("cuisine", "American (New)"))
                         .append("$currentDate", new Document("lastModified", true))
mvn exec:java -Dexec.mainClass=com.admatic.primer.UpdatePrimer \
    -Dexec.args="mongodb+srv://admatic:admatic123@admatic-cluster-7qyyr.mongodb.net/test 0"
updateTopLevelFields
Modified Count = 1

Update Embedded Field

db.getCollection("restaurants").updateOne(new Document("restaurant_id", "40356018"),
                new Document("$set", new Document("address.street", "East 31st Street"))
mvn exec:java -Dexec.mainClass=com.admatic.primer.UpdatePrimer \
    -Dexec.args="mongodb+srv://admatic:admatic123@admatic-cluster-7qyyr.mongodb.net/test 1"
updateEmbeddedField
Modified Count = 1

Update Multiple Documents

db.getCollection("restaurants").updateMany(new Document("cuisine", "American"),
                new Document("$set", new Document("cuisine", "American (New)"))
                        .append("$currentDate", new Document("lastModified", true)
mvn exec:java -Dexec.mainClass=com.admatic.primer.UpdatePrimer \
    -Dexec.args="mongodb+srv://admatic:admatic123@admatic-cluster-7qyyr.mongodb.net/test 2"
updateMultipleDocuments
Modified Count = 2

Replace Document

db.getCollection("restaurants").replaceOne(new Document("restaurant_id", "40356018"),
                new Document("address",
                        new Document()
                                .append("street", "2 Avenue")
                                .append("zipcode", "10075")
                                .append("building", "1480")
                                .append("coord", asList(-73.9557413, 40.7720266)))
                        .append("name", "Vella 2")
mvn exec:java -Dexec.mainClass=com.admatic.primer.UpdatePrimer \
    -Dexec.args="mongodb+srv://admatic:admatic123@admatic-cluster-7qyyr.mongodb.net/test 3"
replaceDocument
Modified Count = 1

results matching ""

    No results matching ""