1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
public class PageRequest { public int PageIndex { get; set; }
public int PageSize { get; set; }
public string Order { get; set; } }
public class ParameterBase { public string CollectName { get; set; }
public int PageIndex { get; set; }
public int PageSize { get; set; } }
public class PageMongoParameter : ParameterBase { public BsonDocument Sort { get; } public BsonDocument Skip { get; } public BsonDocument Limit { get; } public BsonDocument Filter2 { get; }
public BsonDocument[] Pipeline { get; set; }
public PageMongoParameter(PageRequest req, string collectName, BsonDocument filter = null, BsonDocument sort = null, BsonDocument filter2 = null) { CollectName = collectName; PageIndex = req.PageIndex; PageSize = req.PageSize; Limit = new BsonDocument { { "$limit", PageSize } }; Skip = new BsonDocument { { "$skip", (PageIndex - 1) * PageSize } };
if (sort == null) { if (!string.IsNullOrEmpty(req.Order)) Sort = new BsonDocument { { "$sort", new BsonDocument { { req.Order, 1 } } } }; } else { Sort = sort; }
if (filter != null && filter2 == null) { var dom = filter.GetElement(0); Filter2 = BsonDocument.Parse(dom.Value.ToJson()); } Filter2 ??= new BsonDocument();
if (filter == null && Sort == null) Pipeline = new[] { Skip, Limit }; else { if (filter != null && Sort != null) Pipeline = new[] { filter, Skip, Limit, Sort }; else Pipeline = filter == null ? new[] { Skip, Limit, Sort } : new[] { filter, Skip, Limit }; } } }
|