@SuppressWarnings("unchecked") private WriteResult replaceOrInsert(final DBObject obj, final Object id, final WriteConcern writeConcern) { DBObject filter = new BasicDBObject(ID_FIELD_NAME, id); UpdateRequest replaceRequest = new UpdateRequest(wrap(filter), wrap(obj, objectCodec), com.mongodb.bulk.WriteRequest.Type.REPLACE).upsert(true); return executeWriteOperation(new UpdateOperation(getNamespace(), false, writeConcern, retryWrites, singletonList(replaceRequest))); }
@Override com.mongodb.bulk.WriteRequest toNew(final DBCollection dbCollection) { return new com.mongodb.bulk.UpdateRequest(new BsonDocumentWrapper<DBObject>(query, codec), new BsonDocumentWrapper<DBObject>(document, replacementCodec), com.mongodb.bulk.WriteRequest.Type.REPLACE) .upsert(isUpsert()) .collation(getCollation()); } }
/** * 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 */ 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())); }
@Override com.mongodb.bulk.WriteRequest toNew(final DBCollection dbCollection) { return new com.mongodb.bulk.UpdateRequest(new BsonDocumentWrapper<DBObject>(query, codec), new BsonDocumentWrapper<DBObject>(update, codec), com.mongodb.bulk.WriteRequest.Type.UPDATE) .upsert(isUpsert()) .multi(isMulti()) .collation(getCollation()) .arrayFilters(dbCollection.wrapAllowNull(arrayFilters, codec)); } }
} else if (writeModel instanceof ReplaceOneModel) { ReplaceOneModel<TDocument> replaceOneModel = (ReplaceOneModel<TDocument>) writeModel; writeRequest = new UpdateRequest(toBsonDocument(replaceOneModel.getFilter()), documentToBsonDocument(replaceOneModel .getReplacement()), WriteRequest.Type.REPLACE) } else if (writeModel instanceof UpdateOneModel) { UpdateOneModel<TDocument> updateOneModel = (UpdateOneModel<TDocument>) writeModel; writeRequest = new UpdateRequest(toBsonDocument(updateOneModel.getFilter()), toBsonDocument(updateOneModel.getUpdate()), WriteRequest.Type.UPDATE) .multi(false) } else if (writeModel instanceof UpdateManyModel) { UpdateManyModel<TDocument> updateManyModel = (UpdateManyModel<TDocument>) writeModel; writeRequest = new UpdateRequest(toBsonDocument(updateManyModel.getFilter()), toBsonDocument(updateManyModel.getUpdate()), WriteRequest.Type.UPDATE) .multi(true)
@SuppressWarnings("unchecked") private WriteResult replaceOrInsert(final DBObject obj, final Object id, final WriteConcern writeConcern) { DBObject filter = new BasicDBObject(ID_FIELD_NAME, id); UpdateRequest replaceRequest = new UpdateRequest(wrap(filter), wrap(obj, objectCodec), com.mongodb.bulk.WriteRequest.Type.REPLACE).upsert(true); return executeWriteOperation(new UpdateOperation(getNamespace(), false, writeConcern, retryWrites, singletonList(replaceRequest))); }
@Override com.mongodb.bulk.WriteRequest toNew(final DBCollection dbCollection) { return new com.mongodb.bulk.UpdateRequest(new BsonDocumentWrapper<DBObject>(query, codec), new BsonDocumentWrapper<DBObject>(document, replacementCodec), com.mongodb.bulk.WriteRequest.Type.REPLACE) .upsert(isUpsert()) .collation(getCollation()); } }
@Override com.mongodb.bulk.WriteRequest toNew(final DBCollection dbCollection) { return new com.mongodb.bulk.UpdateRequest(new BsonDocumentWrapper<DBObject>(query, codec), new BsonDocumentWrapper<DBObject>(update, codec), com.mongodb.bulk.WriteRequest.Type.UPDATE) .upsert(isUpsert()) .multi(isMulti()) .collation(getCollation()) .arrayFilters(dbCollection.wrapAllowNull(arrayFilters, codec)); } }
/** * 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 */ 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())); }
} else if (writeModel instanceof ReplaceOneModel) { ReplaceOneModel<TDocument> replaceOneModel = (ReplaceOneModel<TDocument>) writeModel; writeRequest = new UpdateRequest(toBsonDocument(replaceOneModel.getFilter()), documentToBsonDocument(replaceOneModel .getReplacement()), WriteRequest.Type.REPLACE) } else if (writeModel instanceof UpdateOneModel) { UpdateOneModel<TDocument> updateOneModel = (UpdateOneModel<TDocument>) writeModel; writeRequest = new UpdateRequest(toBsonDocument(updateOneModel.getFilter()), toBsonDocument(updateOneModel.getUpdate()), WriteRequest.Type.UPDATE) .multi(false) } else if (writeModel instanceof UpdateManyModel) { UpdateManyModel<TDocument> updateManyModel = (UpdateManyModel<TDocument>) writeModel; writeRequest = new UpdateRequest(toBsonDocument(updateManyModel.getFilter()), toBsonDocument(updateManyModel.getUpdate()), WriteRequest.Type.UPDATE) .multi(true)