using System; using System.Linq.Expressions; using System.Threading; using System.Threading.Tasks; using MongoDB.Driver; using MongoDbGenericRepository.DataAccess.Update; using MongoDbGenericRepository.Models; namespace MongoDbGenericRepository { /// /// The base Repository, it is meant to be inherited from by your custom custom MongoRepository implementation. /// Its constructor must be given a connection string and a database name. /// public abstract partial class BaseMongoRepository : IBaseMongoRepository_Update { private IMongoDbUpdater _mongoDbUpdater; /// /// The MongoDb accessor to update data. /// protected virtual IMongoDbUpdater MongoDbUpdater { get { if (_mongoDbUpdater != null) { return _mongoDbUpdater; } lock (_initLock) { if (_mongoDbUpdater == null) { _mongoDbUpdater = new MongoDbUpdater(MongoDbContext); } } return _mongoDbUpdater; } set => _mongoDbUpdater = value; } #region Update /// public virtual async Task UpdateOneAsync(TDocument modifiedDocument) where TDocument : IDocument { return await UpdateOneAsync(modifiedDocument, CancellationToken.None); } /// public virtual async Task UpdateOneAsync(TDocument modifiedDocument, CancellationToken cancellationToken) where TDocument : IDocument { return await MongoDbUpdater.UpdateOneAsync(modifiedDocument, cancellationToken); } /// public virtual bool UpdateOne(TDocument modifiedDocument) where TDocument : IDocument { return UpdateOne(modifiedDocument, CancellationToken.None); } /// public virtual bool UpdateOne(TDocument modifiedDocument, CancellationToken cancellationToken) where TDocument : IDocument { return MongoDbUpdater.UpdateOne(modifiedDocument, cancellationToken); } /// public virtual async Task UpdateOneAsync(TDocument documentToModify, UpdateDefinition update) where TDocument : IDocument { return await UpdateOneAsync(documentToModify, update, CancellationToken.None); } /// public virtual async Task UpdateOneAsync( TDocument documentToModify, UpdateDefinition update, CancellationToken cancellationToken) where TDocument : IDocument { return await MongoDbUpdater.UpdateOneAsync(documentToModify, update, cancellationToken); } /// public virtual bool UpdateOne(TDocument documentToModify, UpdateDefinition update) where TDocument : IDocument { return UpdateOne(documentToModify, update, CancellationToken.None); } /// public virtual bool UpdateOne(TDocument documentToModify, UpdateDefinition update, CancellationToken cancellationToken) where TDocument : IDocument { return MongoDbUpdater.UpdateOne(documentToModify, update, cancellationToken); } /// public virtual bool UpdateOne(TDocument documentToModify, Expression> field, TField value) where TDocument : IDocument { return UpdateOne(documentToModify, field, value, CancellationToken.None); } /// public virtual bool UpdateOne( TDocument documentToModify, Expression> field, TField value, CancellationToken cancellationToken) where TDocument : IDocument { return MongoDbUpdater.UpdateOne(documentToModify, field, value, cancellationToken); } /// public virtual async Task UpdateOneAsync(TDocument documentToModify, Expression> field, TField value) where TDocument : IDocument { return await UpdateOneAsync(documentToModify, field, value, CancellationToken.None); } /// public virtual async Task UpdateOneAsync( TDocument documentToModify, Expression> field, TField value, CancellationToken cancellationToken) where TDocument : IDocument { return await MongoDbUpdater.UpdateOneAsync(documentToModify, field, value, cancellationToken); } /// public virtual bool UpdateOne(FilterDefinition filter, Expression> field, TField value) where TDocument : IDocument { return UpdateOne(filter, field, value, null, CancellationToken.None); } /// public virtual bool UpdateOne( FilterDefinition filter, Expression> field, TField value, CancellationToken cancellationToken) where TDocument : IDocument { return UpdateOne(filter, field, value, null, cancellationToken); } /// public virtual bool UpdateOne( FilterDefinition filter, Expression> field, TField value, string partitionKey) where TDocument : IDocument { return UpdateOne(filter, field, value, partitionKey, CancellationToken.None); } /// public virtual bool UpdateOne( FilterDefinition filter, Expression> field, TField value, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument { return MongoDbUpdater.UpdateOne(filter, field, value, partitionKey, cancellationToken); } /// public virtual bool UpdateOne(Expression> filter, Expression> field, TField value) where TDocument : IDocument { return UpdateOne(filter, field, value, null, CancellationToken.None); } /// public virtual bool UpdateOne( Expression> filter, Expression> field, TField value, CancellationToken cancellationToken) where TDocument : IDocument { return UpdateOne(filter, field, value, null, cancellationToken); } /// public virtual bool UpdateOne( Expression> filter, Expression> field, TField value, string partitionKey) where TDocument : IDocument { return UpdateOne(filter, field, value, partitionKey, CancellationToken.None); } /// public virtual bool UpdateOne( Expression> filter, Expression> field, TField value, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument { return MongoDbUpdater.UpdateOne(filter, field, value, partitionKey, cancellationToken); } /// public virtual async Task UpdateOneAsync( FilterDefinition filter, Expression> field, TField value) where TDocument : IDocument { return await UpdateOneAsync(filter, field, value, null, CancellationToken.None); } /// public virtual async Task UpdateOneAsync( FilterDefinition filter, Expression> field, TField value, CancellationToken cancellationToken) where TDocument : IDocument { return await UpdateOneAsync(filter, field, value, null, cancellationToken); } /// public virtual async Task UpdateOneAsync( FilterDefinition filter, Expression> field, TField value, string partitionKey) where TDocument : IDocument { return await UpdateOneAsync(filter, field, value, partitionKey, CancellationToken.None); } /// public virtual async Task UpdateOneAsync( FilterDefinition filter, Expression> field, TField value, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument { return await MongoDbUpdater.UpdateOneAsync(filter, field, value, partitionKey, cancellationToken); } /// public virtual async Task UpdateOneAsync( Expression> filter, Expression> field, TField value) where TDocument : IDocument { return await UpdateOneAsync(filter, field, value, null, CancellationToken.None); } /// public virtual async Task UpdateOneAsync( Expression> filter, Expression> field, TField value, CancellationToken cancellationToken) where TDocument : IDocument { return await UpdateOneAsync(filter, field, value, null, cancellationToken); } /// public virtual async Task UpdateOneAsync( Expression> filter, Expression> field, TField value, string partitionKey) where TDocument : IDocument { return await UpdateOneAsync(filter, field, value, partitionKey, CancellationToken.None); } /// public virtual async Task UpdateOneAsync( Expression> filter, Expression> field, TField value, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument { return await MongoDbUpdater.UpdateOneAsync(filter, field, value, partitionKey, cancellationToken); } /// public virtual async Task UpdateManyAsync( FilterDefinition filter, Expression> field, TField value) where TDocument : IDocument { return await UpdateManyAsync(filter, field, value, null, CancellationToken.None); } /// public virtual async Task UpdateManyAsync( FilterDefinition filter, Expression> field, TField value, CancellationToken cancellationToken) where TDocument : IDocument { return await UpdateManyAsync(filter, field, value, null, cancellationToken); } /// public virtual async Task UpdateManyAsync( FilterDefinition filter, Expression> field, TField value, string partitionKey) where TDocument : IDocument { return await UpdateManyAsync(filter, field, value, partitionKey, CancellationToken.None); } /// public virtual async Task UpdateManyAsync( FilterDefinition filter, Expression> field, TField value, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument { return await MongoDbUpdater.UpdateManyAsync(filter, field, value, partitionKey, cancellationToken); } /// public virtual async Task UpdateManyAsync( Expression> filter, Expression> field, TField value) where TDocument : IDocument { return await UpdateManyAsync(filter, field, value, null, CancellationToken.None); } /// public virtual async Task UpdateManyAsync( Expression> filter, Expression> field, TField value, CancellationToken cancellationToken) where TDocument : IDocument { return await UpdateManyAsync(filter, field, value, null, cancellationToken); } /// public virtual async Task UpdateManyAsync( Expression> filter, Expression> field, TField value, string partitionKey) where TDocument : IDocument { return await UpdateManyAsync(filter, field, value, partitionKey, CancellationToken.None); } /// public virtual async Task UpdateManyAsync( Expression> filter, Expression> field, TField value, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument { return await MongoDbUpdater.UpdateManyAsync(filter, field, value, partitionKey, cancellationToken); } /// public virtual async Task UpdateManyAsync(FilterDefinition filter, UpdateDefinition updateDefinition) where TDocument : IDocument { return await UpdateManyAsync(filter, updateDefinition, null, CancellationToken.None); } /// public virtual async Task UpdateManyAsync( FilterDefinition filter, UpdateDefinition updateDefinition, CancellationToken cancellationToken) where TDocument : IDocument { return await UpdateManyAsync(filter, updateDefinition, null, cancellationToken); } /// public virtual async Task UpdateManyAsync( FilterDefinition filter, UpdateDefinition updateDefinition, string partitionKey) where TDocument : IDocument { return await UpdateManyAsync(filter, updateDefinition, partitionKey, CancellationToken.None); } /// public virtual async Task UpdateManyAsync( FilterDefinition filter, UpdateDefinition updateDefinition, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument { return await MongoDbUpdater.UpdateManyAsync(filter, updateDefinition, partitionKey, cancellationToken); } /// public async Task UpdateManyAsync(Expression> filter, UpdateDefinition updateDefinition) where TDocument : IDocument { return await UpdateManyAsync(filter, updateDefinition, null, CancellationToken.None); } /// public async Task UpdateManyAsync( Expression> filter, UpdateDefinition updateDefinition, CancellationToken cancellationToken) where TDocument : IDocument { return await UpdateManyAsync(filter, updateDefinition, null, cancellationToken); } /// public async Task UpdateManyAsync( Expression> filter, UpdateDefinition updateDefinition, string partitionKey) where TDocument : IDocument { return await UpdateManyAsync(filter, updateDefinition, partitionKey, CancellationToken.None); } /// public async Task UpdateManyAsync( Expression> filter, UpdateDefinition updateDefinition, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument { return await MongoDbUpdater.UpdateManyAsync(filter, updateDefinition, partitionKey, cancellationToken); } /// public virtual long UpdateMany(FilterDefinition filter, Expression> field, TField value) where TDocument : IDocument { return UpdateMany(filter, field, value, null, CancellationToken.None); } /// public virtual long UpdateMany( FilterDefinition filter, Expression> field, TField value, CancellationToken cancellationToken) where TDocument : IDocument { return UpdateMany(filter, field, value, null, cancellationToken); } /// public virtual long UpdateMany( FilterDefinition filter, Expression> field, TField value, string partitionKey) where TDocument : IDocument { return UpdateMany(filter, field, value, partitionKey, CancellationToken.None); } /// public virtual long UpdateMany( FilterDefinition filter, Expression> field, TField value, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument { return MongoDbUpdater.UpdateMany(filter, field, value, partitionKey, cancellationToken); } /// public virtual long UpdateMany(Expression> filter, Expression> field, TField value) where TDocument : IDocument { return UpdateMany(filter, field, value, null, CancellationToken.None); } /// public virtual long UpdateMany( Expression> filter, Expression> field, TField value, CancellationToken cancellationToken) where TDocument : IDocument { return UpdateMany(filter, field, value, null, cancellationToken); } /// public virtual long UpdateMany( Expression> filter, Expression> field, TField value, string partitionKey) where TDocument : IDocument { return UpdateMany(filter, field, value, partitionKey, CancellationToken.None); } /// public virtual long UpdateMany( Expression> filter, Expression> field, TField value, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument { return MongoDbUpdater.UpdateMany(filter, field, value, partitionKey, cancellationToken); } /// public virtual long UpdateMany(FilterDefinition filter, UpdateDefinition updateDefinition) where TDocument : IDocument { return UpdateMany(filter, updateDefinition, null, CancellationToken.None); } /// public virtual long UpdateMany( FilterDefinition filter, UpdateDefinition updateDefinition, CancellationToken cancellationToken) where TDocument : IDocument { return UpdateMany(filter, updateDefinition, null, cancellationToken); } /// public virtual long UpdateMany(FilterDefinition filter, UpdateDefinition updateDefinition, string partitionKey) where TDocument : IDocument { return UpdateMany(filter, updateDefinition, partitionKey, CancellationToken.None); } /// public virtual long UpdateMany( FilterDefinition filter, UpdateDefinition updateDefinition, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument { return MongoDbUpdater.UpdateMany(filter, updateDefinition, partitionKey, cancellationToken); } /// public long UpdateMany(Expression> filter, UpdateDefinition updateDefinition) where TDocument : IDocument { return UpdateMany(filter, updateDefinition, null, CancellationToken.None); } /// public long UpdateMany( Expression> filter, UpdateDefinition updateDefinition, CancellationToken cancellationToken) where TDocument : IDocument { return UpdateMany(filter, updateDefinition, null, cancellationToken); } /// public long UpdateMany(Expression> filter, UpdateDefinition updateDefinition, string partitionKey) where TDocument : IDocument { return UpdateMany(filter, updateDefinition, partitionKey, CancellationToken.None); } /// public long UpdateMany( Expression> filter, UpdateDefinition updateDefinition, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument { return MongoDbUpdater.UpdateMany(filter, updateDefinition, partitionKey, cancellationToken); } #endregion Update #region Update TKey /// public virtual async Task UpdateOneAsync(TDocument modifiedDocument) where TDocument : IDocument where TKey : IEquatable { return await UpdateOneAsync(modifiedDocument, CancellationToken.None); } /// public virtual async Task UpdateOneAsync(TDocument modifiedDocument, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return await MongoDbUpdater.UpdateOneAsync(modifiedDocument, cancellationToken); } /// public virtual bool UpdateOne(TDocument modifiedDocument) where TDocument : IDocument where TKey : IEquatable { return UpdateOne(modifiedDocument, CancellationToken.None); } /// public virtual bool UpdateOne(TDocument modifiedDocument, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return MongoDbUpdater.UpdateOne(modifiedDocument, cancellationToken); } /// public virtual async Task UpdateOneAsync(TDocument documentToModify, UpdateDefinition update) where TDocument : IDocument where TKey : IEquatable { return await UpdateOneAsync(documentToModify, update, CancellationToken.None); } /// public virtual async Task UpdateOneAsync( TDocument documentToModify, UpdateDefinition update, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return await MongoDbUpdater.UpdateOneAsync(documentToModify, update, cancellationToken); } /// public virtual bool UpdateOne(TDocument documentToModify, UpdateDefinition update) where TDocument : IDocument where TKey : IEquatable { return UpdateOne(documentToModify, update, CancellationToken.None); } /// public virtual bool UpdateOne(TDocument documentToModify, UpdateDefinition update, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return MongoDbUpdater.UpdateOne(documentToModify, update, cancellationToken); } /// public virtual bool UpdateOne(TDocument documentToModify, Expression> field, TField value) where TDocument : IDocument where TKey : IEquatable { return UpdateOne(documentToModify, field, value, CancellationToken.None); } /// public virtual bool UpdateOne( TDocument documentToModify, Expression> field, TField value, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return MongoDbUpdater.UpdateOne(documentToModify, field, value, cancellationToken); } /// public virtual async Task UpdateOneAsync( TDocument documentToModify, Expression> field, TField value) where TDocument : IDocument where TKey : IEquatable { return await UpdateOneAsync(documentToModify, field, value, CancellationToken.None); } /// public virtual async Task UpdateOneAsync( TDocument documentToModify, Expression> field, TField value, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return await MongoDbUpdater.UpdateOneAsync(documentToModify, field, value, cancellationToken); } /// public virtual bool UpdateOne(FilterDefinition filter, Expression> field, TField value) where TDocument : IDocument where TKey : IEquatable { return UpdateOne(filter, field, value, null, CancellationToken.None); } /// public virtual bool UpdateOne( FilterDefinition filter, Expression> field, TField value, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return UpdateOne(filter, field, value, null, cancellationToken); } /// public virtual bool UpdateOne( FilterDefinition filter, Expression> field, TField value, string partitionKey) where TDocument : IDocument where TKey : IEquatable { return UpdateOne(filter, field, value, partitionKey, CancellationToken.None); } /// public virtual bool UpdateOne( FilterDefinition filter, Expression> field, TField value, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return MongoDbUpdater.UpdateOne(filter, field, value, partitionKey, cancellationToken); } /// public virtual bool UpdateOne( Expression> filter, Expression> field, TField value) where TDocument : IDocument where TKey : IEquatable { return UpdateOne(filter, field, value, null, CancellationToken.None); } /// public virtual bool UpdateOne( Expression> filter, Expression> field, TField value, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return UpdateOne(filter, field, value, null, cancellationToken); } /// public virtual bool UpdateOne( Expression> filter, Expression> field, TField value, string partitionKey) where TDocument : IDocument where TKey : IEquatable { return UpdateOne(filter, field, value, partitionKey, CancellationToken.None); } /// public virtual bool UpdateOne( Expression> filter, Expression> field, TField value, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return MongoDbUpdater.UpdateOne(filter, field, value, partitionKey, cancellationToken); } /// public virtual async Task UpdateOneAsync( FilterDefinition filter, Expression> field, TField value) where TDocument : IDocument where TKey : IEquatable { return await UpdateOneAsync(filter, field, value, null, CancellationToken.None); } /// public virtual async Task UpdateOneAsync( FilterDefinition filter, Expression> field, TField value, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return await UpdateOneAsync(filter, field, value, null, cancellationToken); } /// public virtual async Task UpdateOneAsync( FilterDefinition filter, Expression> field, TField value, string partitionKey) where TDocument : IDocument where TKey : IEquatable { return await UpdateOneAsync(filter, field, value, partitionKey, CancellationToken.None); } /// public virtual async Task UpdateOneAsync( FilterDefinition filter, Expression> field, TField value, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return await MongoDbUpdater.UpdateOneAsync(filter, field, value, partitionKey, cancellationToken); } /// public virtual async Task UpdateOneAsync( Expression> filter, Expression> field, TField value) where TDocument : IDocument where TKey : IEquatable { return await UpdateOneAsync(Builders.Filter.Where(filter), field, value, null, CancellationToken.None); } /// public virtual async Task UpdateOneAsync( Expression> filter, Expression> field, TField value, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return await UpdateOneAsync(Builders.Filter.Where(filter), field, value, null, cancellationToken); } /// public virtual async Task UpdateOneAsync( Expression> filter, Expression> field, TField value, string partitionKey) where TDocument : IDocument where TKey : IEquatable { return await UpdateOneAsync(Builders.Filter.Where(filter), field, value, partitionKey, CancellationToken.None); } /// public virtual async Task UpdateOneAsync( Expression> filter, Expression> field, TField value, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return await MongoDbUpdater.UpdateOneAsync( Builders.Filter.Where(filter), field, value, partitionKey, cancellationToken); } /// public virtual async Task UpdateManyAsync( Expression> filter, Expression> field, TField value) where TDocument : IDocument where TKey : IEquatable { return await UpdateManyAsync(filter, field, value, null, CancellationToken.None); } /// public virtual async Task UpdateManyAsync( Expression> filter, Expression> field, TField value, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return await UpdateManyAsync(filter, field, value, null, cancellationToken); } /// public virtual async Task UpdateManyAsync( Expression> filter, Expression> field, TField value, string partitionKey) where TDocument : IDocument where TKey : IEquatable { return await UpdateManyAsync(filter, field, value, partitionKey, CancellationToken.None); } /// public virtual async Task UpdateManyAsync( Expression> filter, Expression> field, TField value, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return await MongoDbUpdater.UpdateManyAsync(filter, field, value, partitionKey, cancellationToken); } /// public virtual async Task UpdateManyAsync( FilterDefinition filter, Expression> field, TField value) where TDocument : IDocument where TKey : IEquatable { return await UpdateManyAsync(filter, field, value, null, CancellationToken.None); } /// public virtual async Task UpdateManyAsync( FilterDefinition filter, Expression> field, TField value, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return await UpdateManyAsync(filter, field, value, null, cancellationToken); } /// public virtual async Task UpdateManyAsync( FilterDefinition filter, Expression> field, TField value, string partitionKey) where TDocument : IDocument where TKey : IEquatable { return await UpdateManyAsync(filter, field, value, partitionKey, CancellationToken.None); } /// public virtual async Task UpdateManyAsync( FilterDefinition filter, Expression> field, TField value, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return await MongoDbUpdater.UpdateManyAsync(filter, field, value, partitionKey, cancellationToken); } /// public virtual async Task UpdateManyAsync(FilterDefinition filter, UpdateDefinition updateDefinition) where TDocument : IDocument where TKey : IEquatable { return await UpdateManyAsync(filter, updateDefinition, null, CancellationToken.None); } /// public virtual async Task UpdateManyAsync( FilterDefinition filter, UpdateDefinition updateDefinition, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return await UpdateManyAsync(filter, updateDefinition, null, cancellationToken); } /// public virtual async Task UpdateManyAsync( FilterDefinition filter, UpdateDefinition updateDefinition, string partitionKey) where TDocument : IDocument where TKey : IEquatable { return await UpdateManyAsync(filter, updateDefinition, partitionKey, CancellationToken.None); } /// public virtual async Task UpdateManyAsync( FilterDefinition filter, UpdateDefinition updateDefinition, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return await MongoDbUpdater.UpdateManyAsync(filter, updateDefinition, partitionKey, cancellationToken); } /// public virtual async Task UpdateManyAsync(Expression> filter, UpdateDefinition updateDefinition) where TDocument : IDocument where TKey : IEquatable { return await UpdateManyAsync(filter, updateDefinition, null, CancellationToken.None); } /// public virtual async Task UpdateManyAsync( Expression> filter, UpdateDefinition updateDefinition, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return await UpdateManyAsync(filter, updateDefinition, null, cancellationToken); } /// public virtual async Task UpdateManyAsync( Expression> filter, UpdateDefinition updateDefinition, string partitionKey) where TDocument : IDocument where TKey : IEquatable { return await UpdateManyAsync(filter, updateDefinition, partitionKey, CancellationToken.None); } /// public virtual async Task UpdateManyAsync( Expression> filter, UpdateDefinition updateDefinition, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return await MongoDbUpdater.UpdateManyAsync(filter, updateDefinition, partitionKey, cancellationToken); } /// public virtual long UpdateMany( Expression> filter, Expression> field, TField value) where TDocument : IDocument where TKey : IEquatable { return UpdateMany(filter, field, value, null, CancellationToken.None); } /// public virtual long UpdateMany( Expression> filter, Expression> field, TField value, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return UpdateMany(filter, field, value, null, cancellationToken); } /// public virtual long UpdateMany( Expression> filter, Expression> field, TField value, string partitionKey) where TDocument : IDocument where TKey : IEquatable { return UpdateMany(filter, field, value, partitionKey, CancellationToken.None); } /// public virtual long UpdateMany( Expression> filter, Expression> field, TField value, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return MongoDbUpdater.UpdateMany(filter, field, value, partitionKey, cancellationToken); } /// public virtual long UpdateMany(FilterDefinition filter, Expression> field, TField value) where TDocument : IDocument where TKey : IEquatable { return UpdateMany(filter, field, value, null, CancellationToken.None); } /// public virtual long UpdateMany( FilterDefinition filter, Expression> field, TField value, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return UpdateMany(filter, field, value, null, cancellationToken); } /// public virtual long UpdateMany( FilterDefinition filter, Expression> field, TField value, string partitionKey) where TDocument : IDocument where TKey : IEquatable { return UpdateMany(filter, field, value, partitionKey, CancellationToken.None); } /// public virtual long UpdateMany( FilterDefinition filter, Expression> field, TField value, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return MongoDbUpdater.UpdateMany(filter, field, value, partitionKey, cancellationToken); } /// public virtual long UpdateMany(Expression> filter, UpdateDefinition updateDefinition) where TDocument : IDocument where TKey : IEquatable { return UpdateMany(filter, updateDefinition, null, CancellationToken.None); } /// public virtual long UpdateMany( Expression> filter, UpdateDefinition updateDefinition, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return UpdateMany(filter, updateDefinition, null, cancellationToken); } /// public virtual long UpdateMany( Expression> filter, UpdateDefinition updateDefinition, string partitionKey) where TDocument : IDocument where TKey : IEquatable { return UpdateMany(filter, updateDefinition, partitionKey, CancellationToken.None); } /// public virtual long UpdateMany( Expression> filter, UpdateDefinition updateDefinition, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return MongoDbUpdater.UpdateMany(filter, updateDefinition, partitionKey, cancellationToken); } /// public virtual long UpdateMany(FilterDefinition filter, UpdateDefinition updateDefinition) where TDocument : IDocument where TKey : IEquatable { return UpdateMany(filter, updateDefinition, null, CancellationToken.None); } /// public virtual long UpdateMany( FilterDefinition filter, UpdateDefinition updateDefinition, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return UpdateMany(filter, updateDefinition, null, cancellationToken); } /// public virtual long UpdateMany(FilterDefinition filter, UpdateDefinition updateDefinition, string partitionKey) where TDocument : IDocument where TKey : IEquatable { return UpdateMany(filter, updateDefinition, partitionKey, CancellationToken.None); } /// public virtual long UpdateMany( FilterDefinition filter, UpdateDefinition updateDefinition, string partitionKey, CancellationToken cancellationToken) where TDocument : IDocument where TKey : IEquatable { return MongoDbUpdater.UpdateMany(filter, updateDefinition, partitionKey, cancellationToken); } #endregion Update } }