IMongoDB.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. using MongoDB.Driver;
  2. using MongoDB.Driver.Linq;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Linq.Expressions;
  7. using System.Reflection.Metadata;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using Volo.Abp.Domain.Entities;
  11. namespace Business.Core.MongoDBHelper
  12. {
  13. /// <summary>
  14. /// MongoDB接口
  15. /// </summary>
  16. /// <typeparam name="T"></typeparam>
  17. public interface IMongoDB<T> where T : Entity<long>
  18. {
  19. /// <summary>
  20. /// 插入一条数据
  21. /// </summary>
  22. /// <param name="document"></param>
  23. /// <returns></returns>
  24. Task InsertOne(T document);
  25. /// <summary>
  26. /// 插入多条数据
  27. /// </summary>
  28. /// <param name="documents"></param>
  29. /// <returns></returns>
  30. Task InsertMany(List<T> documents);
  31. /// <summary>
  32. /// 更新一条数据
  33. /// </summary>
  34. /// <param name="documents"></param>
  35. /// <param name="id"></param>
  36. /// <returns></returns>
  37. Task<ReplaceOneResult> UpdateOne(T documents,long id);
  38. /// <summary>
  39. /// 获取所有数据
  40. /// </summary>
  41. /// <returns></returns>
  42. Task<List<T>> GetAll();
  43. /// <summary>
  44. /// 根据ID获取数据
  45. /// </summary>
  46. /// <param name="id"></param>
  47. /// <returns></returns>
  48. Task<T> GetOneByID(long id);
  49. /// <summary>
  50. /// 根据条件获取数据
  51. /// </summary>
  52. /// <returns></returns>
  53. Task<List<T>> GetManyByCondition(Expression<Func<T, bool>> filter);
  54. /// <summary>
  55. /// 根据条件获取数据
  56. /// </summary>
  57. /// <returns></returns>
  58. Task<List<T>> GetManyByIds(FilterDefinition<T> filter);
  59. /// <summary>
  60. /// 根据id删除对象
  61. /// </summary>
  62. /// <param name="id"></param>
  63. Task DeleteById(long id);
  64. /// <summary>
  65. /// 根据id列表批量删除对象
  66. /// </summary>
  67. /// <param name="ids">id列表</param>
  68. Task DeleteByIds(IEnumerable<long> ids);
  69. /// <summary>
  70. /// 删除数据
  71. /// </summary>
  72. /// <param name="expression"></param>
  73. /// <param name="isOne"></param>
  74. /// <returns></returns>
  75. Task<DeleteResult> Delete(Expression<Func<T, bool>> expression, bool isOne = false);
  76. /// <summary>
  77. /// 删除数据
  78. /// </summary>
  79. /// <param name="filter"></param>
  80. /// <param name="isOne"></param>
  81. /// <returns></returns>
  82. Task<DeleteResult> Delete(FilterDefinition<T> filter, bool isOne = false);
  83. /// <summary>
  84. /// 删除数据-直接删除集合,慎用,慎用,慎用
  85. /// </summary>
  86. /// <returns></returns>
  87. Task DeleteAll();
  88. /// <summary>
  89. /// 根据条件获取结果列表
  90. /// </summary>
  91. /// <param name="expression">条件Expression</param>
  92. /// <returns>结果列表</returns>
  93. Task<List<T>> Find(Expression<Func<T, bool>> expression, ProjectionDefinition<T, T> projecter = null, SortDefinition<T> sorter = null);
  94. /// <summary>
  95. /// 批量更新
  96. /// </summary>
  97. /// <param name="updates"></param>
  98. /// <param name="options"></param>
  99. /// <returns></returns>
  100. Task<BulkWriteResult<T>> BulkWrite(List<WriteModel<T>> updates, BulkWriteOptions options = null);
  101. }
  102. }