使用FluentMongo删除和更新文档

时间:2012-02-24 01:12:06

标签: mongodb fluent-mongo

我想知道是否有人有一个干净的方法来处理使用FluentMongo删除和更新文档?

我正在使用FluentMongo创建存储库层;但是,无法删除或更新文档证明是麻烦的。也许我错过了一种方法来处理这个问题,同时保持适当的存储库模式?

public interface IRepository : IDisposable
{
    IQueryable<T> All<T>() where T : class, new();

    void Delete<T>(Expression<Func<T, bool>> expression)
        where T : class, new();

    void Update<TEntity>(TEntity entity) where TEntity : class, new();
}

谢谢。

1 个答案:

答案 0 :(得分:0)

最简单的方法是将标准MongoCollection包装在您的存储库方法之后。由于您的存储库已键入,您只需创建一个类型化集合并从该集合中删除文档。这是一个示例实现。

 MongoCollection<T> collection = mongoserver.GetCollection<T>();

 public void Delete(string id)
 {   
      this.collection.Remove(Query.EQ("_id", id));
 }

 public void Delete(T entity)
 {
     this.Delete(entity.Id);
 }

2013年7月27日由 balexandre 添加

使用FluentMongo,有一个属性可以检索对高级查询有用的MongoCollection<T>,例如,如果我们要删除集合中的所有文档,我们会写如下:

public void DeleteAll() {
    var collection = myRepository.Collection;
    collection.RemoveAll();
}

如果您要返回确认所有文档确实已删除的确认,请使用Ok属性

public bool DeleteAll() {
    var collection = myRepository.Collection;
    return collection.RemoveAll().Ok;
}