Example usage for com.mongodb.client MongoCollection replaceOne

List of usage examples for com.mongodb.client MongoCollection replaceOne

Introduction

In this page you can find the example usage for com.mongodb.client MongoCollection replaceOne.

Prototype

UpdateResult replaceOne(Bson filter, TDocument replacement);

Source Link

Document

Replace a document in the collection according to the specified arguments.

Usage

From source file:com.gs.obevo.mongodb.impl.MongoDbChangeAuditDao.java

License:Apache License

@Override
public void updateOrInsertChange(Change change, DeployExecution deployExecution) {
    MongoCollection<Document> auditCollection = getAuditCollection(change);
    MutableList<Document> docs = iterableToCollection(auditCollection.find(getChangeFilter(change)));

    if (docs.size() > 1) {
        throw new IllegalStateException("Not expecting multiple changes for this key [" + change.getObjectName()
                + "." + change.getChangeName() + "], but found " + docs);
    } else if (docs.isEmpty()) {
        insertNewChange(change, deployExecution);
    } else {/*from   www  .j a va 2s . c o  m*/
        Document previousDoc = docs.get(0);
        Date timeInserted = previousDoc.getDate(timeInsertedColumn);
        auditCollection.replaceOne(getChangeFilter(change),
                createDocFromChange(change, deployExecution, timeInserted));
    }
}

From source file:com.gs.obevo.mongodb.impl.MongoDbDeployExecutionDao.java

License:Apache License

@Override
public void update(DeployExecution deployExecution) {
    MongoDatabase database = mongoClient
            .getDatabase(env.getPhysicalSchema(deployExecution.getSchema()).getPhysicalName());
    MongoCollection<Document> auditCollection = database.getCollection(deployExecutionTableName);

    auditCollection.replaceOne(getChangeFilter(deployExecution),
            getDocumentFromDeployExecution(deployExecution, true));
}

From source file:com.u2apple.rt.db.dao.DeviceLogDao.java

public void updateDeviceLog(String productId, String[] vids, Model model) {
    MongoCollection<Document> deviceLog = getDeviceLog();
    Document filter = new Document("product-id", productId);
    Document doc = getDeviceLog().find(filter).first();
    if (doc != null && model != null) {
        List<Document> models = doc.get("models", List.class);
        Document m = convertModel(vids, model);
        if (models != null) {
            models.add(m);// w  w  w.  java2 s  .  c o  m
        } else {
            models = new ArrayList<>();
            models.add(m);
        }
        doc.append("models", models);
        deviceLog.replaceOne(filter, doc);
    } else {
        Device device = new Device();
        device.setProductId(productId);
        doc = toDocument(device);
        List<Document> models = new ArrayList<>();
        models.add(convertModel(vids, model));
        doc.append("models", models);
        deviceLog.insertOne(doc);
    }
}

From source file:com.u2apple.tool.dao.DeviceLogDao.java

public void updateDeviceLog(String productId, String[] vids, Modal model) {
    MongoCollection<Document> deviceLog = getDeviceLog();
    Document filter = new Document("product-id", productId);
    Document doc = getDeviceLog().find(filter).first();
    if (doc != null && model != null) {
        List<Document> models = doc.get("models", List.class);
        Document m = convertModel(vids, model);
        if (models != null) {
            models.add(m);//from   ww  w. j  a v a  2 s  .c o  m
        } else {
            models = new ArrayList<>();
            models.add(m);
        }
        doc.append("models", models);
        deviceLog.replaceOne(filter, doc);
    } else {
        Device device = new Device();
        device.setProductId(productId);
        doc = toDocument(device);
        List<Document> models = new ArrayList<>();
        models.add(convertModel(vids, model));
        doc.append("models", models);
        deviceLog.insertOne(doc);
    }
}

From source file:data.Activity.java

License:Open Source License

public void updateInDb(DBManagerMongo manager) throws Exception {
    MongoCollection<Document> coll = manager.getDb().getCollection("activity");
    Document toUpdate = new Document("hash", getLocalHash()).append("project_phase_id", getProjectPhaseId())
            .append("project_id", getProjectId()).append("user_login_name", getUserLoginName())
            .append("description", getDescription())
            .append("start_time", Date.from(getStart().toLocalDateTime().atZone(ZoneId.of("UTC")).toInstant()))
            .append("end_time", Date.from(getStop().toLocalDateTime().atZone(ZoneId.of("UTC")).toInstant()))
            .append("comment", getComments()).append("id", getId());

    UpdateResult result = coll.replaceOne(and(eq("id", getId()), eq("hash", getRemoteHash())), toUpdate);
    if (result.getModifiedCount() != 1)
        throw new Exception("Record was modified or not found");

    setRemoteHash(getLocalHash());/*from   w w w .  j a v  a2s  .com*/
}

From source file:data.Project.java

License:Open Source License

public void updateInDb(DBManagerMongo manager) throws Exception {
    MongoCollection<Document> coll = manager.getDb().getCollection("project");
    Document toUpdate = new Document("hash", getLocalHash()).append("name", getName())
            .append("description", getDescription()).append("id", getId()).append("hash", getLocalHash());
    UpdateResult result = coll.replaceOne(and(eq("id", getId()), eq("hash", getRemoteHash())), toUpdate);
    if (result.getModifiedCount() != 1)
        throw new Exception("Record was modyfied or not found");
    setRemoteHash(getLocalHash());/*from w ww.j  a  va 2s .  c o  m*/
}

From source file:data.ProjectMember.java

License:Open Source License

public void updateInDb(DBManagerMongo manager) throws Exception {

    MongoCollection<Document> coll = manager.getDb().getCollection("project_member");
    Document toUpdate = new Document("hash", getLocalHash()).append("user_login_name", getUserLoginName())
            .append("project_id", getProjectId()).append("role", getRole().name());

    UpdateResult result = coll
            .replaceOne(and(and(eq("user_login_name", getUserLoginName()), eq("hash", getRemoteHash())),
                    eq("project_id", getProjectId())), toUpdate);
    if (result.getModifiedCount() != 1)
        throw new Exception("Record was modyfied or not found");

    setRemoteHash(getLocalHash());//from   w w w .  j a  v a 2 s .  co m
}

From source file:data.ProjectPhase.java

License:Open Source License

public void updateInDb(DBManagerMongo manager) throws Exception {
    MongoCollection<Document> coll = manager.getDb().getCollection("project_phase");
    Document toUpdate = new Document("hash", getLocalHash()).append("name", getName())
            .append("project_id", getProjectId()).append("id", getId());
    UpdateResult result = coll.replaceOne(and(eq("id", getId()), eq("hash", getRemoteHash())), toUpdate);
    if (result.getModifiedCount() != 1)
        throw new Exception("Record was modyfied or not found");
    setRemoteHash(getLocalHash());//from  w  w w. j av  a 2  s  .c  o m
}

From source file:data.User.java

License:Open Source License

public void updateInDb(DBManagerMongo manager) throws Exception {
    MongoCollection<Document> coll = manager.getDb().getCollection("user");
    Document toUpdate = new Document("hash", getLocalHash()).append("login_name", getLoginName())
            .append("first_name", getFirstName()).append("last_name", getLastName()).append("email", getEmail())
            .append("salt", getSalt()).append("password", getPassword()).append("role", getRole().name());

    UpdateResult result = coll.replaceOne(and(eq("login_name", getLoginName()), eq("hash", getRemoteHash())),
            toUpdate);// w  w w.  j  av a2s. c om
    if (result.getModifiedCount() != 1)
        throw new Exception("Record was modyfied or not found");
    setRemoteHash(getLocalHash());

}

From source file:documentation.ChangeStreamSamples.java

License:Apache License

/**
 * Run this main method to see the output of this quick example.
 *
 * @param args takes an optional single argument for the connection string
 *//*from   w ww.j  ava2 s  . co  m*/
public static void main(final String[] args) {
    MongoClient mongoClient;

    if (args.length == 0) {
        // connect to the local database server
        mongoClient = MongoClients.create("mongodb://localhost:27017,localhost:27018,localhost:27019");
    } else {
        mongoClient = MongoClients.create(args[0]);
    }

    // Select the MongoDB database.
    MongoDatabase database = mongoClient.getDatabase("testChangeStreams");
    database.drop();
    sleep();

    // Select the collection to query.
    MongoCollection<Document> collection = database.getCollection("documents");

    /*
     * Example 1
     * Create a simple change stream against an existing collection.
     */
    System.out.println("1. Initial document from the Change Stream:");

    // Create the change stream cursor.
    MongoChangeStreamCursor<ChangeStreamDocument<Document>> cursor = collection.watch().cursor();

    // Insert a test document into the collection.
    collection.insertOne(Document.parse("{username: 'alice123', name: 'Alice'}"));
    ChangeStreamDocument<Document> next = cursor.next();
    System.out.println(next);
    cursor.close();
    sleep();

    /*
     * Example 2
     * Create a change stream with 'lookup' option enabled.
     * The test document will be returned with a full version of the updated document.
     */
    System.out.println("2. Document from the Change Stream, with lookup enabled:");

    // Create the change stream cursor.
    cursor = collection.watch().fullDocument(FullDocument.UPDATE_LOOKUP).cursor();

    // Update the test document.
    collection.updateOne(Document.parse("{username: 'alice123'}"),
            Document.parse("{$set : { email: 'alice@example.com'}}"));

    // Block until the next result is returned
    next = cursor.next();
    System.out.println(next);
    cursor.close();
    sleep();

    /*
     * Example 3
     * Create a change stream with 'lookup' option using a $match and ($redact or $project) stage.
     */
    System.out.println(
            "3. Document from the Change Stream, with lookup enabled, matching `update` operations only: ");

    // Insert some dummy data.
    collection.insertMany(asList(Document.parse("{updateMe: 1}"), Document.parse("{replaceMe: 1}")));

    // Create $match pipeline stage.
    List<Bson> pipeline = singletonList(
            Aggregates.match(Filters.or(Document.parse("{'fullDocument.username': 'alice123'}"),
                    Filters.in("operationType", asList("update", "replace", "delete")))));

    // Create the change stream cursor with $match.
    cursor = collection.watch(pipeline).fullDocument(FullDocument.UPDATE_LOOKUP).cursor();

    // Forward to the end of the change stream
    next = cursor.tryNext();

    // Update the test document.
    collection.updateOne(Filters.eq("updateMe", 1), Updates.set("updated", true));
    next = cursor.next();
    System.out.println(format("Update operationType: %s %n %s", next.getUpdateDescription(), next));

    // Replace the test document.
    collection.replaceOne(Filters.eq("replaceMe", 1), Document.parse("{replaced: true}"));
    next = cursor.next();
    System.out.println(format("Replace operationType: %s", next));

    // Delete the test document.
    collection.deleteOne(Filters.eq("username", "alice123"));
    next = cursor.next();
    System.out.println(format("Delete operationType: %s", next));
    cursor.close();
    sleep();

    /**
     * Example 4
     * Resume a change stream using a resume token.
     */
    System.out.println("4. Document from the Change Stream including a resume token:");

    // Get the resume token from the last document we saw in the previous change stream cursor.
    BsonDocument resumeToken = cursor.getResumeToken();
    System.out.println(resumeToken);

    // Pass the resume token to the resume after function to continue the change stream cursor.
    cursor = collection.watch().resumeAfter(resumeToken).cursor();

    // Insert a test document.
    collection.insertOne(Document.parse("{test: 'd'}"));

    // Block until the next result is returned
    next = cursor.next();
    System.out.println(next);
    cursor.close();
}