public static List <T> FindDocumentByPage <T>(MongoCollectionName collectionName, FilterDefinition <BsonDocument> queryCondition, int pageIndex, int pageSize, string sortKey, MongoSortTypeEnum sortType) { var database = mongoClient.GetDatabase(Configurations.mongoDBName); var collection = database.GetCollection <BsonDocument>(GetCollectionNameFromCollectionEnum(collectionName)); FilterDefinition <BsonDocument> filter = queryCondition; SortDefinition <BsonDocument> sort = null; if (sortType == MongoSortTypeEnum.Asc) { sort = Builders <BsonDocument> .Sort.Ascending(sortKey); } else if (sortType == MongoSortTypeEnum.Desc) { sort = Builders <BsonDocument> .Sort.Descending(sortKey); } int startIndex = pageIndex * pageSize; var bsonList = collection.Find(filter).Sort(sort).Skip(startIndex).Limit(pageSize).Project(projection).ToList(); List <T> result = new List <T>(); foreach (var bson in bsonList) { string json = DeserializeBsonDocumentToJson(collection, bson); T item = JsonConvert.DeserializeObject <T>(json); result.Add(item); } return(result); }
public static List <T> FindDocumentByPage <T>(MongoCollectionName collectionName, Dictionary <string, string> queryCondition, int pageIndex, int pageSize, string sortKey, MongoSortTypeEnum sortType) { var database = mongoClient.GetDatabase(Configurations.mongoDBName); var collection = database.GetCollection <BsonDocument>(GetCollectionNameFromCollectionEnum(collectionName)); var bsonDoc = GenerateFilterDocumentFromDict(collection, queryCondition); FilterDefinition <BsonDocument> filter = bsonDoc; return(FindDocumentByPage <T>(collectionName, filter, pageIndex, pageSize, sortKey, sortType)); }