driver-legacy/src/main/com/mongodb/DBCollection.java
public WriteResult update(final DBObject query, final DBObject update, final DBCollectionUpdateOptions options) {
        notNull("query", query);
        notNull("update", update);
        notNull("options", options);
        WriteConcern writeConcern = options.getWriteConcern() != null ? options.getWriteConcern() : getWriteConcern();
        com.mongodb.bulk.WriteRequest.Type updateType = !update.keySet().isEmpty() && update.keySet().iterator().next().startsWith("$")
                                                                ? com.mongodb.bulk.WriteRequest.Type.UPDATE
                                                                : com.mongodb.bulk.WriteRequest.Type.REPLACE;
        UpdateRequest updateRequest = new UpdateRequest(wrap(query), wrap(update, options.getEncoder()), updateType)
                                              .upsert(options.isUpsert()).multi(options.isMulti())
                                              .collation(options.getCollation())
                                              .arrayFilters(wrapAllowNull(options.getArrayFilters(), options.getEncoder()));
        return executeWriteOperation(new UpdateOperation(getNamespace(), true, writeConcern, retryWrites,
                singletonList(updateRequest)).bypassDocumentValidation(options.getBypassDocumentValidation()));
    }
public WriteResult update(final DBObject query, final DBObject update, final DBCollectionUpdateOptions options) {
        notNull("query", query);
        notNull("update", update);
        notNull("options", options);
        WriteConcern writeConcern = options.getWriteConcern() != null ? options.getWriteConcern() : getWriteConcern();
        com.mongodb.bulk.WriteRequest.Type updateType = !update.keySet().isEmpty() && update.keySet().iterator().next().startsWith("$")
                                                                ? com.mongodb.bulk.WriteRequest.Type.UPDATE
                                                                : com.mongodb.bulk.WriteRequest.Type.REPLACE;
        UpdateRequest updateRequest = new UpdateRequest(wrap(query), wrap(update, options.getEncoder()), updateType)
                                              .upsert(options.isUpsert()).multi(options.isMulti())
                                              .collation(options.getCollation())
                                              .arrayFilters(wrapAllowNull(options.getArrayFilters(), options.getEncoder()));
        return executeWriteOperation(new UpdateOperation(getNamespace(), true, writeConcern, retryWrites,
                singletonList(updateRequest)).bypassDocumentValidation(options.getBypassDocumentValidation()));
    }
public WriteResult update ( final DBObject query , final DBObject update , final DBCollectionUpdateOptions options ) { notNull ( "query" , query ) ; notNull ( "update" , update ) ; notNull ( "options" , options ) ; WriteConcern writeConcern = options . getWriteConcern ( ) != null ? options . getWriteConcern ( ) : getWriteConcern ( ) ; com . mongodb . bulk . WriteRequest . Type updateType = ! update . keySet ( ) . isEmpty ( ) && update . keySet ( ) . iterator ( ) . next ( ) . startsWith ( "$" ) ? com . mongodb . bulk . WriteRequest . Type . UPDATE : com . mongodb . bulk . WriteRequest . Type . REPLACE ; UpdateRequest updateRequest = new UpdateRequest ( wrap ( query ) , wrap ( update , options . getEncoder ( ) ) , updateType ) . upsert ( options . isUpsert ( ) ) . multi ( options . isMulti ( ) ) . collation ( options . getCollation ( ) ) . arrayFilters ( wrapAllowNull ( options . getArrayFilters ( ) , options . getEncoder ( ) ) ) ; return executeWriteOperation ( new UpdateOperation ( getNamespace ( ) , true , writeConcern , retryWrites , singletonList ( updateRequest ) ) . bypassDocumentValidation ( options . getBypassDocumentValidation ( ) ) ) ; }
Modify an existing document or documents in collection.

@param query the selection criteria for the update
@param update the modifications to apply
@param options the options to apply to the update operation
@return the result of the operation
@throws com.mongodb.DuplicateKeyException if the write failed to a duplicate unique key
@throws com.mongodb.WriteConcernException if the write failed due some other failure specific to the update command
@throws MongoException if the operation failed for some other reason
@mongodb.driver.manual tutorial/modify-documents/ Modify
@since 3.4
Modify an existing document or documents in collection .