Refactoring Remove method in MongoDb Repository

First method

public void RemoveById(Guid id)
{
  _collection.Remove(Query.EQ("_id", id));
}

Using:

_repository.RemoveById(id);

Disadvantages:

Second method

public void RemoveByQuery(IMongoQuery query)
{
  _collection.Remove(query);
}

Using:

_repository.RemoveByQuery(Query.EQ("_id", id));

Disadvantages:

Third method

public void Remove<TValue>(Expression<Func<TEntity, TValue>> expression, TValue value)
{
  _collection.Remove(Query<TEntity>.EQ(expression, value));
}

Using:

_repository.Remove(x => x.Id, id);

Disadvantages:

Advantages:

Fourth method

public void Remove(Expression<Func<TEntity, bool>> whereExpression)
{
  _collection.Remove(Query<TEntity>.Where(whereExpression));
}

Using:

_repository.Remove(x => x.Id == id);

Advantages: