IMongoDB.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. using Amazon.Runtime.Documents;
  2. using MongoDB.Driver;
  3. using MongoDB.Driver.Linq;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Linq.Expressions;
  8. using System.Reflection.Metadata;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using Volo.Abp.Domain.Entities;
  12. namespace Business.Core.MongoDBHelper
  13. {
  14. /// <summary>
  15. /// MongoDB接口
  16. /// </summary>
  17. /// <typeparam name="T"></typeparam>
  18. public interface IMongoDB<T>
  19. {
  20. /// <summary>
  21. /// 插入一条数据
  22. /// </summary>
  23. /// <param name="document"></param>
  24. /// <returns></returns>
  25. Task InsertOne(T document);
  26. /// <summary>
  27. /// 插入多条数据
  28. /// </summary>
  29. /// <param name="documents"></param>
  30. /// <returns></returns>
  31. Task InsertMany(List<T> documents);
  32. /// <summary>
  33. /// 获取所有数据
  34. /// </summary>
  35. /// <returns></returns>
  36. Task<List<T>> GetAll();
  37. /// <summary>
  38. /// 根据条件获取数据
  39. /// </summary>
  40. /// <returns></returns>
  41. Task<List<T>> GetManyByCondition(Expression<Func<T, bool>> filter);
  42. /// <summary>
  43. /// 根据条件获取数据
  44. /// </summary>
  45. /// <returns></returns>
  46. Task<List<T>> GetManyByIds(FilterDefinition<T> filter);
  47. /// <summary>
  48. /// 删除数据
  49. /// </summary>
  50. /// <param name="expression"></param>
  51. /// <param name="isOne"></param>
  52. /// <returns></returns>
  53. Task<DeleteResult> Delete(Expression<Func<T, bool>> expression, bool isOne = false);
  54. /// <summary>
  55. /// 删除数据
  56. /// </summary>
  57. /// <param name="filter"></param>
  58. /// <param name="isOne"></param>
  59. /// <returns></returns>
  60. Task<DeleteResult> Delete(FilterDefinition<T> filter, bool isOne = false);
  61. /// <summary>
  62. /// 根据条件获取结果列表
  63. /// </summary>
  64. /// <param name="expression">条件Expression</param>
  65. /// <returns>结果列表</returns>
  66. Task<List<T>> Find(Expression<Func<T, bool>> expression, ProjectionDefinition<T, T> projecter = null, SortDefinition<T> sorter = null);
  67. /// <summary>
  68. /// 批量更新
  69. /// </summary>
  70. /// <param name="updates"></param>
  71. /// <param name="options"></param>
  72. /// <returns></returns>
  73. Task<BulkWriteResult<T>> BulkWrite(List<WriteModel<T>> updates, BulkWriteOptions options = null);
  74. /// <summary>
  75. /// 根据条件获取结果列表
  76. /// </summary>
  77. /// <param name="filter">条件FilterDefinition</param>
  78. /// <param name="sorter">排序规则定义</param>
  79. /// <param name="projecter">查询字段定义</param>
  80. /// <returns>结果列表</returns>
  81. Task<List<T>> Find(FilterDefinition<T> filter, ProjectionDefinition<T, T> projecter = null, SortDefinition<T> sorter = null);
  82. }
  83. }