public async Task <T> FindByIdAsync(Guid id)
        {
            var filter = Builders <T> .Filter.Eq(d => d.Id, id);

            var document = await _collection.FindAsync(filter).Result.FirstOrDefaultAsync();

            if (document == null)
            {
                throw EntityNotFoundException.OfType <T>(id);
            }
            return(document);
        }
        public async Task ReplaceOneAsync(T document)
        {
            if (document == null)
            {
                throw new BadRequestException($"Document {typeof(T).ToString().Split('.').Last()} was not provided.");
            }

            var filter = Builders <T> .Filter.Eq(d => d.Id, document.Id);

            var doc = await _collection.FindAsync(filter).Result.FirstOrDefaultAsync();

            if (doc == null)
            {
                throw EntityNotFoundException.OfType <T>(document.Id);
            }
            await _collection.ReplaceOneAsync(filter, document);
        }