Example usage for com.mongodb.client MongoCollection updateOne

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

Introduction

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

Prototype

UpdateResult updateOne(Bson filter, List<? extends Bson> update);

Source Link

Document

Update a single document in the collection according to the specified arguments.

Usage

From source file:net.springfieldusa.storage.mongodb.comp.MongoStorageComponent.java

License:Open Source License

@Override
public <T extends EntityObject> long patch(String collection, T data) {
    MongoCollection<Document> mongoCollection = getCollection(collection);
    List<Bson> updates = new ArrayList<>();

    if (data.getAttributes() != null) {
        for (Entry<String, Object> entry : data.getAttributes().entrySet())
            updates.add(set(entry.getKey(), entry.getValue()));
    }/*from  w  w w.  j  a  v a  2 s. c o  m*/

    if (data.getMeta() != null) {
        for (Entry<String, Object> entry : data.getMeta().entrySet())
            updates.add(set(META + "." + entry.getKey(), entry.getValue()));
    }

    if (data.getRelationships() != null) {
        for (Relationship relationship : data.getRelationships()) {
            if (relationship.isMany()) {
                Collection<Document> dbReferences = new ArrayList<>();
                updates.add(set(RELATIONSHIPS + "." + relationship.getType(), dbReferences));

                relationship.getObjectReferences().forEach((reference) -> {
                    if (reference.getId() != null)
                        dbReferences.add(createReference(reference));
                });
            } else {
                if (relationship.getObjectReference().getId() != null)
                    updates.add(set(RELATIONSHIPS + "." + relationship.getType(),
                            createReference(relationship.getObjectReference())));
            }
        }
    }

    UpdateResult result = mongoCollection.updateOne(eq(ID, data.getId()), combine(updates));
    return result.getMatchedCount();
}

From source file:org.kaaproject.kaa.server.datamigration.UpdateUuidsMigration.java

License:Apache License

/**
 * Change encoding of uuids from Latin1 to Base64 in relational and NoSQL databases.
 *
 *//*  w  w w. j ava  2 s .  c  o  m*/
public void transform() throws IOException, SQLException {
    QueryRunner run = new QueryRunner();
    ResultSetHandler<List<Configuration>> rsHandler = new BeanListHandler<>(Configuration.class);
    List<Configuration> configs = run.query(connection, "SELECT * FROM configuration", rsHandler);
    for (Configuration config : configs) {
        JsonNode json = new ObjectMapper().readTree(config.getConfigurationBody());
        JsonNode jsonEncoded = encodeUuids(json);
        byte[] encodedConfigurationBody = jsonEncoded.toString().getBytes();

        int updates = run.update(connection, "UPDATE configuration SET configuration_body=? WHERE id=?",
                encodedConfigurationBody, config.getId());
        if (updates != 1) {
            System.err.println("Error: failed to update configuration: " + config);
        }
    }

    if (nosql.equals(Options.DEFAULT_NO_SQL)) {
        MongoDatabase database = client.getDatabase(dbName);
        MongoCollection<Document> userConfiguration = database.getCollection("user_configuration");
        FindIterable<Document> documents = userConfiguration.find();
        for (Document d : documents) {
            String body = (String) d.get("body");
            JsonNode json = new ObjectMapper().readTree(body);
            JsonNode jsonEncoded = encodeUuids(json);
            userConfiguration.updateOne(Filters.eq("_id", d.get("_id")),
                    Filters.eq("$set", Filters.eq("body", jsonEncoded)));
        }

    } else {
        Session session = cluster.connect(dbName);
        BatchStatement batchStatement = new BatchStatement();

        String tableName = "user_conf";
        ResultSet results = session.execute(select().from(tableName));
        for (Row row : results) {
            String userId = row.getString("user_id");
            String appToken = row.getString("app_token");
            int schemaVersion = row.getInt("schema_version");

            String body = row.getString("body");
            String bodyEncoded = encodeUuids(new ObjectMapper().readTree(body)).toString();

            batchStatement.add(update(tableName).with(set("body", bodyEncoded)).where(eq("user_id", userId))
                    .and(eq("app_token", appToken)).and(eq("schema_version", schemaVersion)));
        }

        session.execute(batchStatement);
        session.close();
        cluster.close();
    }

}

From source file:org.piotr.apollo.service.LessonService.java

public void updateLessonTest(Finished finished) {

    MongoCollection collection = mongoDB.getCollection(lessonCollection);
    Double gradeToUpdate = 0.0;//  w  ww  .ja  va  2  s .  c o  m

    BasicDBObject toUpdate = new BasicDBObject();
    BasicDBObject oldObject = new BasicDBObject();

    oldObject.append("_id", new ObjectId(finished.getLessonId()));

    Document document = new Document();
    document.append("_id", new ObjectId(finished.getLessonId()));

    FindIterable iterable = collection.find(document);
    MongoCursor<Document> cursor = iterable.iterator();

    while (cursor.hasNext()) {
        Document temp = cursor.next();

        Integer testCounter = temp.getInteger("testCounter");
        Double percentageCorrect = temp.getDouble("percentageCorrect");

        toUpdate.append("testCounter", testCounter + 1);

        if (percentageCorrect != 0.0) {
            toUpdate.append("percentageCorrect", (percentageCorrect + finished.getPercentage()) / 2);
            gradeToUpdate = getProperGrade((percentageCorrect + finished.getPercentage()) / 2);
        } else {
            toUpdate.append("percentageCorrect", finished.getPercentage());
            gradeToUpdate = getProperGrade(finished.getPercentage());
        }

        toUpdate.append("grade", gradeToUpdate);

        collection.updateOne(oldObject, new BasicDBObject("$set", toUpdate));

    }
}

From source file:org.siphon.jsmongo.MongoExecutor.java

License:Open Source License

public Object updateRow(String table, ScriptObjectMirror row1, ScriptObjectMirror row2)
        throws SqlExecutorException, ScriptException {
    MongoCollection<Document> collection = database.getCollection(table);
    Document document = jsObjectToDocument(row1);
    Document document2 = jsObjectToDocument(row2);
    UpdateResult result = collection.updateOne(document, document2);

    return bsonObjectToJsObject(result.getUpsertedId());
}

From source file:org.trade.core.persistence.local.mongo.MongoPersistence.java

License:Apache License

@Override
public void storeBinaryData(byte[] data, String collectionName, String identifier) throws Exception {
    MongoClient client = new MongoClient(new MongoClientURI(this.mongoUrl));
    MongoDatabase db = client.getDatabase(this.dbName);

    MongoCollection<Document> collection = db.getCollection(collectionName);
    Document doc = collection.find(Filters.eq(IDENTIFIER_FIELD, identifier)).limit(1).first();

    if (data == null) {
        // We assume that if the value is set to null, we should delete also the corresponding database entry
        if (doc != null) {
            collection.deleteOne(Filters.eq(IDENTIFIER_FIELD, identifier));
        }//  ww w  . j  av  a 2 s. c  o m
    } else {
        // Check if the document already exists and update it
        if (doc != null) {
            collection.updateOne(Filters.eq(IDENTIFIER_FIELD, identifier),
                    Updates.combine(Updates.set(DATA_FIELD, data), Updates.currentDate("lastModified")));
        } else {
            Document document = new Document(IDENTIFIER_FIELD, identifier).append(DATA_FIELD, data)
                    .append("lastModified", new Date());
            collection.insertOne(document);
        }
    }

    client.close();
}

From source file:tour.PojoQuickTour.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  ww  w. j  a v  a  2 s .  c  o  m*/
public static void main(final String[] args) {
    MongoClient mongoClient;

    if (args.length == 0) {
        // connect to the local database server
        mongoClient = MongoClients.create();
    } else {
        mongoClient = MongoClients.create(args[0]);
    }

    // create codec registry for POJOs
    CodecRegistry pojoCodecRegistry = fromRegistries(MongoClientSettings.getDefaultCodecRegistry(),
            fromProviders(PojoCodecProvider.builder().automatic(true).build()));

    // get handle to "mydb" database
    MongoDatabase database = mongoClient.getDatabase("mydb").withCodecRegistry(pojoCodecRegistry);

    // get a handle to the "people" collection
    MongoCollection<Person> collection = database.getCollection("people", Person.class);

    // drop all the data in it
    collection.drop();

    // make a document and insert it
    Person ada = new Person("Ada Byron", 20, new Address("St James Square", "London", "W1"));
    System.out.println("Original Person Model: " + ada);
    collection.insertOne(ada);

    // Person will now have an ObjectId
    System.out.println("Mutated Person Model: " + ada);

    // get it (since it's the only one in there since we dropped the rest earlier on)
    Person somebody = collection.find().first();
    System.out.println(somebody);

    // now, lets add some more people so we can explore queries and cursors
    List<Person> people = asList(
            new Person("Charles Babbage", 45, new Address("5 Devonshire Street", "London", "W11")),
            new Person("Alan Turing", 28, new Address("Bletchley Hall", "Bletchley Park", "MK12")),
            new Person("Timothy Berners-Lee", 61, new Address("Colehill", "Wimborne", null)));

    collection.insertMany(people);
    System.out.println("total # of people " + collection.countDocuments());

    System.out.println("");
    // lets get all the documents in the collection and print them out
    Block<Person> printBlock = new Block<Person>() {
        @Override
        public void apply(final Person person) {
            System.out.println(person);
        }
    };

    collection.find().forEach(printBlock);

    System.out.println("");
    // now use a query to get 1 document out
    somebody = collection.find(eq("address.city", "Wimborne")).first();
    System.out.println(somebody);

    System.out.println("");
    // now lets find every over 30
    collection.find(gt("age", 30)).forEach(printBlock);

    System.out.println("");
    // Update One
    collection.updateOne(eq("name", "Ada Byron"), combine(set("age", 23), set("name", "Ada Lovelace")));

    System.out.println("");
    // Update Many
    UpdateResult updateResult = collection.updateMany(not(eq("zip", null)), set("zip", null));
    System.out.println(updateResult.getModifiedCount());

    System.out.println("");
    // Replace One
    updateResult = collection.replaceOne(eq("name", "Ada Lovelace"), ada);
    System.out.println(updateResult.getModifiedCount());

    // Delete One
    collection.deleteOne(eq("address.city", "Wimborne"));

    // Delete Many
    DeleteResult deleteResult = collection.deleteMany(eq("address.city", "London"));
    System.out.println(deleteResult.getDeletedCount());

    // Clean up
    database.drop();

    // release resources
    mongoClient.close();
}

From source file:uk.ac.ebi.eva.dbmigration.mongodb.ExtractAnnotationFromVariant.java

License:Apache License

@ChangeSet(order = "006", id = "addDefaultVersionInAnnotationMetadata", author = "EVA")
public void addDefaultVersion(MongoDatabase mongoDatabase) {
    final MongoCollection<Document> annotationMetadataCollection = mongoDatabase
            .getCollection(databaseParameters.getDbCollectionsAnnotationMetadataName());
    logger.info("6) add default annotation version to collection {} ",
            annotationMetadataCollection.getNamespace());

    Document allVersions = new Document();
    Document setDefaultToFalse = new Document("$set", new Document(DEFAULT_VERSION_FIELD, false));
    annotationMetadataCollection.updateMany(allVersions, setDefaultToFalse);

    String id = databaseParameters.getVepVersion() + "_" + databaseParameters.getVepCacheVersion();
    Document defaultVersionDocument = new Document(ID_FIELD, id);
    Document setDefaultToTrue = new Document("$set", new Document(DEFAULT_VERSION_FIELD, true));
    UpdateResult updateResult = annotationMetadataCollection.updateOne(defaultVersionDocument,
            setDefaultToTrue);//from w  ww  . ja v a2  s  .  co  m
    Assert.state(updateResult.getModifiedCount() == 1, "Only one modification was expected");
}