相关的 Issue

描述(做了什么,变更了什么)

修改了MongoDB拓展,增加了一些常用方法

使用方法

  1. 注册 MongoDB 服务
    使用非常简单,只需要在 Startup.cs 中添加 services.AddMongoDB 即可。如:
    services.AddMongoDB("mongodb://localhost/dbName");
  1. 基本使用

    在使用之前,我们可以通过构造函数注入 IMongoDBRepository<TEntity, TKey> 接口,如:

    private readonly IMongoDBRepository<Person, string> _personRep;
    public MongoService(IMongoDBRepository<Person, string> personRep)
    {
        _personRep = personRep;
    }

2.1 新增操作

    var person = input.Adapt<Person>();
    await _personRep.InsertAsync(person);

2.2 批量新增操作

    var list = input.Adapt<List<Person>>();
    await _personRep.BatchInsertAsync(list);

2.3 更新操作

    var person = await _personRep.GetAsync(input.Id);
    _ = person ?? throw Oops.Oh("数据不存在!");
    input.Adapt(person);
    await _personRep.UpdateAsync(person);

2.4 删除操作

    var person = await _personRep.GetAsync(id);
    _ = person ?? throw Oops.Oh("数据不存在!");
    var result=await _personRep.DeleteAsync(person.Id);
    return result.DeletedCount;

2.5 查询操作

    Expression<Func<Person, bool>> where = (a)=>true;
    if (!string.IsNullOrWhiteSpace(input.Name))
    {
        where = where.And(a => a.Name.Contains(input.Name));
    }
    if (input.MinAge.HasValue)
    {
        where = where.And(a => a.Age >= input.MinAge);
    }
    var data = _personRep.Entities.Find(where).ToList();
    
    var data  = await _personRep.Entities.Find(where).ToListAsync(a => new
            {
                Name = a.Name
            });

    var data  = await _personRep.Entities.Find(where).FirstOrDefaultAsync(a => new
            {
                Name = a.Name
            });

2.6 分页查询

    var data = await _personRep.Entities.Find(where).ToPagedListAsync(input.PageIndex,input.PageSize);