using MongoDB.Driver; using System.Linq.Expressions; namespace JiShe.CollectBus.MongoDB { public interface IMongoRepository where T : class, new() { #region 事务操作示例 /// /// 事务添加数据 /// /// MongoDB 会话(session)对象 /// 添加数据 /// Task AddTransactionsAsync(IClientSessionHandle session, T objData); /// /// 事务数据删除 /// /// MongoDB 会话(session)对象 /// objectId /// Task DeleteTransactionsAsync(IClientSessionHandle session, string id); /// /// 事务异步局部更新(仅更新一条记录) /// /// MongoDB 会话(session)对象 /// 过滤器 /// 更新条件 /// Task UpdateTransactionsAsync(IClientSessionHandle session, FilterDefinition filter, UpdateDefinition update); #endregion #region 添加相关操作 /// /// 添加数据 /// /// 添加数据 /// Task AddAsync(T objData); /// /// 批量插入 /// /// 实体集合 /// Task InsertManyAsync(List objDatas); #endregion #region 删除相关操作 /// /// 数据删除 /// /// objectId /// Task DeleteAsync(string id); /// /// 异步删除多条数据 /// /// 删除的条件 /// Task DeleteManyAsync(FilterDefinition filter); #endregion #region 修改相关操作 /// /// 指定对象异步修改一条数据 /// /// 要修改的对象 /// 修改条件 /// Task UpdateAsync(T obj, string id); /// /// 局部更新(仅更新一条记录) /// x.Id == 1 && x.Age > 18 && x.Gender == 0]]> /// new T{ RealName = "Ray", Gender = 1}]]> /// /// 筛选条件 /// 更新条件 /// Task UpdateAsync(Expression> expression, Expression> entity); /// /// 异步局部更新(仅更新一条记录) /// /// 过滤器 /// 更新条件 /// Task UpdateAsync(FilterDefinition filter, UpdateDefinition update); /// /// 异步局部更新(仅更新多条记录) /// /// 筛选条件 /// 更新条件 /// Task UpdateManyAsync(Expression> expression, UpdateDefinition update); /// /// 异步批量修改数据 /// /// 要修改的字段 /// 更新条件 /// Task UpdateManayAsync(Dictionary dic, FilterDefinition filter); #endregion #region 查询统计相关操作 /// /// 通过ID主键获取数据 /// /// objectId /// Task GetByIdAsync(string id); /// /// 获取所有数据 /// /// Task> GetAllAsync(); /// /// 获取记录数 /// /// 筛选条件 /// Task CountAsync(Expression> expression); /// /// 获取记录数 /// /// 过滤器 /// Task CountAsync(FilterDefinition filter); /// /// 判断是否存在 /// /// 条件 /// Task ExistsAsync(Expression> predicate); /// /// 异步查询集合 /// /// 查询条件 /// 要查询的字段,不写时查询全部 /// 要排序的字段 /// Task> FindListAsync(FilterDefinition filter, string[]? field = null, SortDefinition? sort = null); /// /// 异步分页查询集合 /// /// 查询条件 /// 当前页 /// 页容量 /// 要查询的字段,不写时查询全部 /// 要排序的字段 /// Task> FindListByPageAsync(FilterDefinition filter, int pageIndex, int pageSize, string[]? field = null, SortDefinition? sort = null); #endregion } }