public Object doInCollection(MongoCollection<Document> collection) throws MongoException, DataAccessException { MongoAction mongoAction = new MongoAction(writeConcern, MongoActionOperation.SAVE, collectionName, entityClass, dbDoc, null); WriteConcern writeConcernToUse = prepareWriteConcern(mongoAction); MappedDocument mapped = MappedDocument.of(dbDoc); if (!mapped.hasId()) { if (writeConcernToUse == null) { collection.insertOne(dbDoc); } else { collection.withWriteConcern(writeConcernToUse).insertOne(dbDoc); } } else if (writeConcernToUse == null) { collection.replaceOne(mapped.getIdFilter(), dbDoc, new ReplaceOptions().upsert(true)); } else { collection.withWriteConcern(writeConcernToUse).replaceOne(mapped.getIdFilter(), dbDoc, new ReplaceOptions().upsert(true)); } return mapped.getId(); } });
/** * Creates replace options from updateOptions. * * @param updateOptions the updateOptions * @return replace options */ public static ReplaceOptions createReplaceOptions(final UpdateOptions updateOptions) { notNull("updateOptions", updateOptions); List<? extends Bson> arrayFilters = updateOptions.getArrayFilters(); isTrue("ArrayFilters should be empty.", arrayFilters == null || arrayFilters.isEmpty()); return new ReplaceOptions() .bypassDocumentValidation(updateOptions.getBypassDocumentValidation()) .collation(updateOptions.getCollation()) .upsert(updateOptions.isUpsert()); }
/** * Construct a new instance. * * @param filter a document describing the query filter, which may not be null. * @param replacement the replacement document * @param options the options to apply * @deprecated use {@link #ReplaceOneModel(Bson, Object, ReplaceOptions)} instead */ @Deprecated public ReplaceOneModel(final Bson filter, final T replacement, final UpdateOptions options) { this(filter, replacement, createReplaceOptions(options)); }
/** * Gets the options to apply. * * @return the update options * @deprecated use {@link #getReplaceOptions()} instead */ @Deprecated public UpdateOptions getOptions() { return new UpdateOptions() .bypassDocumentValidation(options.getBypassDocumentValidation()) .collation(options.getCollation()) .upsert(options.isUpsert()); }
ReplaceOptions replaceOptions = new ReplaceOptions(); replaceOptions.collation(opts.getCollation()); replaceOptions.upsert(opts.isUpsert());
/** * Construct a new instance. * * @param filter a document describing the query filter, which may not be null. * @param replacement the replacement document */ public ReplaceOneModel(final Bson filter, final T replacement) { this(filter, replacement, new ReplaceOptions()); }
MixedBulkWriteOperation replaceOne(final Bson filter, final TDocument replacement, final ReplaceOptions options) { return bulkWrite(singletonList(new ReplaceOneModel<TDocument>(filter, replacement, options)), new BulkWriteOptions().bypassDocumentValidation(options.getBypassDocumentValidation())); }
ReplaceOptions replaceOptions = new ReplaceOptions(); replaceOptions.upsert(updateOptions.isUpsert()); replaceOptions.collation(updateOptions.getCollation());
@Override public UpdateResult replaceOne(final Bson filter, final TDocument replacement) { return replaceOne(filter, replacement, new ReplaceOptions()); }
/** * Gets the options to apply. * * @return the update options * @deprecated use {@link #getReplaceOptions()} instead */ @Deprecated public UpdateOptions getOptions() { return new UpdateOptions() .bypassDocumentValidation(options.getBypassDocumentValidation()) .collation(options.getCollation()) .upsert(options.isUpsert()); }
MixedBulkWriteOperation replaceOne(final Bson filter, final TDocument replacement, final ReplaceOptions options) { return bulkWrite(singletonList(new ReplaceOneModel<TDocument>(filter, replacement, options)), new BulkWriteOptions().bypassDocumentValidation(options.getBypassDocumentValidation())); }
protected Mono<Object> saveDocument(String collectionName, Document document, Class<?> entityClass) { if (LOGGER.isDebugEnabled()) { LOGGER.debug("Saving Document containing fields: " + document.keySet()); } return createMono(collectionName, collection -> { MongoAction mongoAction = new MongoAction(writeConcern, MongoActionOperation.SAVE, collectionName, entityClass, document, null); WriteConcern writeConcernToUse = prepareWriteConcern(mongoAction); MappedDocument mapped = MappedDocument.of(document); MongoCollection<Document> collectionToUse = writeConcernToUse == null // ? collection // : collection.withWriteConcern(writeConcernToUse); Publisher<?> publisher = !mapped.hasId() // ? collectionToUse.insertOne(document) // : collectionToUse.replaceOne(mapped.getIdFilter(), document, new ReplaceOptions().upsert(true)); return Mono.from(publisher).map(o -> mapped.getId()); }); }
ReplaceOptions replaceOptions = new ReplaceOptions(); replaceOptions.collation(opts.getCollation()); replaceOptions.upsert(opts.isUpsert());
/** * Creates replace options from updateOptions. * * @param updateOptions the updateOptions * @return replace options */ public static ReplaceOptions createReplaceOptions(final UpdateOptions updateOptions) { notNull("updateOptions", updateOptions); List<? extends Bson> arrayFilters = updateOptions.getArrayFilters(); isTrue("ArrayFilters should be empty.", arrayFilters == null || arrayFilters.isEmpty()); return new ReplaceOptions() .bypassDocumentValidation(updateOptions.getBypassDocumentValidation()) .collation(updateOptions.getCollation()) .upsert(updateOptions.isUpsert()); }
@Override public UpdateResult replaceOne(final ClientSession clientSession, final Bson filter, final TDocument replacement) { return replaceOne(clientSession, filter, replacement, new ReplaceOptions()); }
@Override @SuppressWarnings("deprecation") public UpdateResult replaceOne(final Bson filter, final TDocument replacement, final UpdateOptions updateOptions) { return replaceOne(filter, replacement, createReplaceOptions(updateOptions)); }
public Object doInCollection(MongoCollection<Document> collection) throws MongoException, DataAccessException { MongoAction mongoAction = new MongoAction(writeConcern, MongoActionOperation.SAVE, collectionName, entityClass, dbDoc, null); WriteConcern writeConcernToUse = prepareWriteConcern(mongoAction); MappedDocument mapped = MappedDocument.of(dbDoc); if (!mapped.hasId()) { if (writeConcernToUse == null) { collection.insertOne(dbDoc); } else { collection.withWriteConcern(writeConcernToUse).insertOne(dbDoc); } } else if (writeConcernToUse == null) { collection.replaceOne(mapped.getIdFilter(), dbDoc, new ReplaceOptions().upsert(true)); } else { collection.withWriteConcern(writeConcernToUse).replaceOne(mapped.getIdFilter(), dbDoc, new ReplaceOptions().upsert(true)); } return mapped.getId(); } });
ReplaceOptions replaceOptions = new ReplaceOptions(); replaceOptions.upsert(updateOptions.isUpsert()); replaceOptions.collation(updateOptions.getCollation());
/** * Construct a new instance. * * @param filter a document describing the query filter, which may not be null. * @param replacement the replacement document */ public ReplaceOneModel(final Bson filter, final T replacement) { this(filter, replacement, new ReplaceOptions()); }
@Override @SuppressWarnings("deprecation") public UpdateResult replaceOne(final ClientSession clientSession, final Bson filter, final TDocument replacement, final UpdateOptions updateOptions) { return replaceOne(clientSession, filter, replacement, createReplaceOptions(updateOptions)); }