/// <inheritdoc /> public virtual async Task <ReplaceOneResult> ReplaceOneAsync(FilterDefinition <TDocument> filter, TDocument replacement, UpdateOptions options = null, CancellationToken cancellationToken = default(CancellationToken)) { Ensure.IsNotNull(filter, nameof(filter)); Ensure.IsNotNull((object)replacement, "replacement"); if (options?.ArrayFilters != null) { throw new ArgumentException("ArrayFilters cannot be used with ReplaceOne.", nameof(options)); } options = options ?? new UpdateOptions(); var model = new ReplaceOneModel <TDocument>(filter, replacement) { Collation = options.Collation, IsUpsert = options.IsUpsert }; try { var bulkWriteOptions = new BulkWriteOptions { BypassDocumentValidation = options.BypassDocumentValidation }; var result = await BulkWriteAsync(new[] { model }, bulkWriteOptions, cancellationToken).ConfigureAwait(false); return(ReplaceOneResult.FromCore(result)); } catch (MongoBulkWriteException <TDocument> ex) { throw MongoWriteException.FromBulkWriteException(ex); } }
/// <inheritdoc /> public virtual ReplaceOneResult ReplaceOne(FilterDefinition <TDocument> filter, TDocument replacement, UpdateOptions options = null, CancellationToken cancellationToken = default(CancellationToken)) { Ensure.IsNotNull(filter, nameof(filter)); Ensure.IsNotNull((object)replacement, "replacement"); options = options ?? new UpdateOptions(); var model = new ReplaceOneModel <TDocument>(filter, replacement) { Collation = options.Collation, IsUpsert = options.IsUpsert }; try { var bulkWriteOptions = new BulkWriteOptions { BypassDocumentValidation = options.BypassDocumentValidation }; var result = BulkWrite(new[] { model }, bulkWriteOptions, cancellationToken); return(ReplaceOneResult.FromCore(result)); } catch (MongoBulkWriteException <TDocument> ex) { throw MongoWriteException.FromBulkWriteException(ex); } }
private async Task <ReplaceOneResult> ReplaceOneAsync(FilterDefinition <TDocument> filter, TDocument replacement, ReplaceOptions options, Func <IEnumerable <WriteModel <TDocument> >, BulkWriteOptions, Task <BulkWriteResult <TDocument> > > bulkWriteAsync) { Ensure.IsNotNull(filter, nameof(filter)); Ensure.IsNotNull((object)replacement, "replacement"); options = options ?? new ReplaceOptions(); var model = new ReplaceOneModel <TDocument>(filter, replacement) { Collation = options.Collation, Hint = options.Hint, IsUpsert = options.IsUpsert }; try { var bulkWriteOptions = new BulkWriteOptions { BypassDocumentValidation = options.BypassDocumentValidation }; var result = await bulkWriteAsync(new[] { model }, bulkWriteOptions).ConfigureAwait(false); return(ReplaceOneResult.FromCore(result)); } catch (MongoBulkWriteException <TDocument> ex) { throw MongoWriteException.FromBulkWriteException(ex); } }
private ReplaceOneResult ReplaceOne(FilterDefinition <TDocument> filter, TDocument replacement, UpdateOptions options, Func <IEnumerable <WriteModel <TDocument> >, BulkWriteOptions, BulkWriteResult <TDocument> > bulkWrite) { Ensure.IsNotNull(filter, nameof(filter)); Ensure.IsNotNull((object)replacement, "replacement"); if (options?.ArrayFilters != null) { throw new ArgumentException("ArrayFilters cannot be used with ReplaceOne.", nameof(options)); } options = options ?? new UpdateOptions(); var model = new ReplaceOneModel <TDocument>(filter, replacement) { Collation = options.Collation, IsUpsert = options.IsUpsert }; try { var bulkWriteOptions = new BulkWriteOptions { BypassDocumentValidation = options.BypassDocumentValidation }; var result = bulkWrite(new[] { model }, bulkWriteOptions); return(ReplaceOneResult.FromCore(result)); } catch (MongoBulkWriteException <TDocument> ex) { throw MongoWriteException.FromBulkWriteException(ex); } }
public async Task <ReplaceOneResult> ReplaceOneAsync(ReplaceOneModel <TDocument> model, TimeSpan?timeout, CancellationToken cancellationToken) { Ensure.IsNotNull(model, "model"); try { var bulkModel = new BulkWriteModel <TDocument>(new[] { model }); var result = await BulkWriteAsync(bulkModel, timeout, cancellationToken); return(ReplaceOneResult.FromCore(result)); } catch (BulkWriteException <TDocument> ex) { throw WriteException.FromBulkWriteException(ex); } }
/// <inheritdoc /> public virtual async Task <ReplaceOneResult> ReplaceOneAsync(FilterDefinition <TDocument> filter, TDocument replacement, UpdateOptions options = null, CancellationToken cancellationToken = default(CancellationToken)) { Ensure.IsNotNull(filter, "filter"); Ensure.IsNotNull((object)replacement, "replacement"); options = options ?? new UpdateOptions(); var model = new ReplaceOneModel <TDocument>(filter, replacement) { IsUpsert = options.IsUpsert }; try { var result = await BulkWriteAsync(new[] { model }, null, cancellationToken).ConfigureAwait(false); return(ReplaceOneResult.FromCore(result)); } catch (MongoBulkWriteException <TDocument> ex) { throw MongoWriteException.FromBulkWriteException(ex); } }