public Task UpdateDtoAsync(FilterDefinition <TDto> query, UpdateDefinition <TDto> update) { if (isVersioned) { update = update.Inc("Version", 1); } if (isReadObject) { update = update.Set("WriteTimestampUtc", DateTime.UtcNow); } return(Collection.UpdateOneAsync(query, update)); }
protected virtual UpdateDefinition <T> ToUpdateDefinition(Updates <T> updates) { UpdateDefinition <T> updateDefinition = Builders <T> .Update.Combine(); if (updates.Sets != null) { foreach (Update <T> update in updates.Sets) { updateDefinition = updateDefinition.Set(update.PropertyExpression, update.Value); } } if (updates.Increments != null) { foreach (Update <T> update in updates.Increments) { updateDefinition = updateDefinition.Inc(update.PropertyExpression, update.Value); } } if (updates.SetOnInserts != null) { foreach (Update <T> update in updates.SetOnInserts) { updateDefinition = updateDefinition.SetOnInsert(update.PropertyExpression, update.Value); } } if (updates.Pushes != null) { foreach (UpdateCollection <T> update in updates.Pushes) { var property = new ExpressionFieldDefinition <T>(update.PropertyExpression); updateDefinition = updateDefinition.Push(property, update.Value); } } if (updates.Pulls != null) { foreach (UpdateCollection <T> update in updates.Pulls) { var property = new ExpressionFieldDefinition <T>(update.PropertyExpression); updateDefinition = updateDefinition.Pull(property, update.Value); } } return(updateDefinition); }