/// <summary>
 ///
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="collectionName"></param>
 /// <param name="query">条件查询。 调用示例:Query.Matches("Title", "女神") 或者 Query.EQ("Title", "女神") 或者Query.And(Query.Matches("Title", "女神"),Query.EQ("Author", "yanc")) 等等</param>
 /// <param name="pagerInfo"></param>
 /// <param name="sortBy">排序用的。调用示例:SortBy.Descending("Title") 或者 SortBy.Descending("Title").Ascending("Author")等等</param>
 /// <param name="fields">只返回所需要的字段的数据。调用示例:"Title" 或者 new string[] { "Title", "Author" }等等</param>
 /// <returns></returns>
 public static List <T> GetAll <T>(string collectionName, IMongoQuery query, PagerInfo pagerInfo, IMongoSortBy sortBy, params string[] fields)
 {
     return(GetAll <T>(ConnectionStringDefault, DatabaseDefault, collectionName, query, pagerInfo, sortBy, fields));
 }
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="connectionString"></param>
        /// <param name="databaseName"></param>
        /// <param name="collectionName"></param>
        /// <param name="query">条件查询。 调用示例:Query.Matches("Title", "女神") 或者 Query.EQ("Title", "女神") 或者Query.And(Query.Matches("Title", "女神"),Query.EQ("Author", "yanc")) 等等</param>
        /// <param name="pagerInfo"></param>
        /// <param name="sortBy">排序用的。调用示例:SortBy.Descending("Title") 或者 SortBy.Descending("Title").Ascending("Author")等等</param>
        /// <param name="fields">只返回所需要的字段的数据。调用示例:"Title" 或者 new string[] { "Title", "Author" }等等</param>
        /// <returns></returns>
        public static List <T> GetAll <T>(string connectionString, string databaseName, string collectionName, IMongoQuery query, PagerInfo pagerInfo, IMongoSortBy sortBy, params string[] fields)
        {
            var client = new MongoClient(connectionString);
            var server = client.GetServer();

            //获取数据库或者创建数据库(不存在的话)。
            MongoDatabase database = server.GetDatabase(databaseName);

            var result = new List <T>();

            using (server.RequestStart(database))//开始连接数据库。
            {
                MongoCollection <BsonDocument> myCollection = database.GetCollection <BsonDocument>(collectionName);

                MongoCursor <T> myCursor;

                if (null == query)
                {
                    myCursor = myCollection.FindAllAs <T>();
                }
                else
                {
                    myCursor = myCollection.FindAs <T>(query);
                }

                if (null != sortBy)
                {
                    myCursor.SetSortOrder(sortBy);
                }

                if (null != fields)
                {
                    myCursor.SetFields(fields);
                }

                foreach (T entity in myCursor.SetSkip((pagerInfo.Page - 1) * pagerInfo.PageSize).SetLimit(pagerInfo.PageSize))//.SetSkip(100).SetLimit(10)是指读取第一百条后的10条数据。
                {
                    result.Add(entity);
                }
            }
            return(result);
        }
 /// <summary>
 ///
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="collectionName"></param>
 /// <param name="query">条件查询。 调用示例:Query.Matches("Title", "女神") 或者 Query.EQ("Title", "女神") 或者Query.And(Query.Matches("Title", "女神"),Query.EQ("Author", "yanc")) 等等</param>
 /// <param name="pagerInfo"></param>
 /// <returns></returns>
 public static List <T> GetAll <T>(string collectionName, IMongoQuery query, PagerInfo pagerInfo)
 {
     return(GetAll <T>(ConnectionStringDefault, DatabaseDefault, collectionName, query, pagerInfo, null));
 }