Mongodb研究了一些日子,以后會把遇到的問題都貼出來。先把自己的操作類貼出來
操作類使用的是C# samus 客戶端(下載),據老戴測試相率不錯。

public class MongoDbHelper { public static readonly string connectionString = "Servers=192.168.0.3:27017;ConnectTimeout=30000;ConnectionLifetime=300000;MinimumPoolSize=8;MaximumPoolSize=256;Pooled=true"; public static readonly string database = "Friends"; #region 新增 /// <summary> /// 插入新數據 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="collectionName"></param> /// <param name="entiry"></param> public static void InsertOne<T>(string collectionName, T entity) where T : class { using (Mongo mongo = new Mongo(connectionString)) { mongo.Connect(); IMongoDatabase friends = mongo.GetDatabase(database); IMongoCollection<T> categories = friends.GetCollection<T>(collectionName); categories.Insert(entity,true); mongo.Disconnect(); } } /// <summary> /// 插入多個數據 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="collectionName"></param> /// <param name="entiry"></param> public static void InsertAll<T>(string collectionName, IEnumerable<T> entity) where T : class { using (Mongo mongo = new Mongo(connectionString)) { mongo.Connect(); IMongoDatabase friends = mongo.GetDatabase(database); IMongoCollection<T> categories = friends.GetCollection<T>(collectionName); categories.Insert(entity, true); mongo.Disconnect(); } } #endregion #region 更新 /// <summary> /// 更新操作 /// </summary> /// <typeparam name="T">類型</typeparam> /// <param name="collectionName">表名</param> /// <param name="query">條件</param> /// <param name="entry">新實體</param> public static void Update<T>(string collectionName,Document entity,Document query) where T:class { using (Mongo mongo = new Mongo(connectionString)) { mongo.Connect(); IMongoDatabase friends = mongo.GetDatabase(database); IMongoCollection<T> categories = friends.GetCollection<T>(collectionName); categories.Update(entity, query,true); mongo.Disconnect(); } } /// <summary> /// 更新操作 /// </summary> /// <typeparam name="T">類型</typeparam> /// <param name="collectionName">表名</param> /// <param name="query">條件</param> /// <param name="entry">新實體</param> public static void UpdateAll<T>(string collectionName, Document entity, Document query) where T : class { using (Mongo mongo = new Mongo(connectionString)) { mongo.Connect(); IMongoDatabase friends = mongo.GetDatabase(database); IMongoCollection<T> categories = friends.GetCollection<T>(collectionName); categories.Update(entity, query,UpdateFlags.MultiUpdate,true); mongo.Disconnect(); } } #endregion #region 查詢 /// <summary> /// 獲取一條數據 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="collectionName"></param> /// <param name="query"></param> /// <returns></returns> public static T GetOne<T>(string collectionName, Document query) where T : class { T result = default(T); using (Mongo mongo = new Mongo(connectionString)) { mongo.Connect(); IMongoDatabase friends = mongo.GetDatabase(database); IMongoCollection<T> categories = friends.GetCollection<T>(collectionName); result = categories.FindOne(query); mongo.Disconnect(); } return result; } /// <summary> /// 獲取一條數據 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="collectionName"></param> /// <param name="query"></param> /// <returns></returns> public static T GetOne<T>(string collectionName, Document query,Document fields) where T : class { T result = default(T); using (Mongo mongo = new Mongo(connectionString)) { mongo.Connect(); IMongoDatabase friends = mongo.GetDatabase(database); IMongoCollection<T> categories = friends.GetCollection<T>(collectionName); result = categories.Find(query, fields).Skip(0).Limit(1).Documents.First(); mongo.Disconnect(); } return result; } /// <summary> /// 獲取一個集合下所有數據 /// </summary> /// <param name="collectionName"></param> /// <returns></returns> public static List<T> GetAll<T>(string collectionName) where T:class { List<T> result=new List<T>(); using (Mongo mongo = new Mongo(connectionString)) { mongo.Connect(); IMongoDatabase friends = mongo.GetDatabase(database); IMongoCollection<T> categories = friends.GetCollection<T>(collectionName); foreach (T entity in categories.FindAll().Limit(50).Documents) { result.Add(entity); } mongo.Disconnect(); } return result; } /// <summary> /// 獲取列表 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="collectionName"></param> /// <param name="query"></param> /// <param name="Sort"></param> /// <param name="cp"></param> /// <param name="mp"></param> /// <returns></returns> public static List<T> GetList<T>(string collectionName,object selector, Document sort, int cp, int mp) where T : class { List<T> result = new List<T>(); using (Mongo mongo = new Mongo(connectionString)) { mongo.Connect(); IMongoDatabase friends = mongo.GetDatabase(database); IMongoCollection<T> categories = friends.GetCollection<T>(collectionName); foreach (T entity in categories.Find(selector).Sort(sort).Skip((cp - 1) * mp).Limit(mp).Documents) { result.Add(entity); } mongo.Disconnect(); } return result; } /// <summary> /// 獲取列表 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="collectionName"></param> /// <param name="query"></param> /// <param name="Sort"></param> /// <param name="cp"></param> /// <param name="mp"></param> /// <returns></returns> public static List<T> GetList<T>(string collectionName, object selector,object fields, Document sort, int cp, int mp) where T : class { List<T> result = new List<T>(); using (Mongo mongo = new Mongo(connectionString)) { mongo.Connect(); IMongoDatabase friends = mongo.GetDatabase(database); IMongoCollection<T> categories = friends.GetCollection<T>(collectionName); foreach (T entity in categories.Find(selector,fields).Sort(sort).Skip((cp - 1) * mp).Limit(mp).Documents) { result.Add(entity); } mongo.Disconnect(); } return result; } #endregion #region 刪除 /// <summary> /// 刪除數據 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="collectionName"></param> /// <param name="entity"></param> public static void Delete<T>(string collectionName, Document query) where T : class { using (Mongo mongo = new Mongo(connectionString)) { mongo.Connect(); IMongoDatabase friends = mongo.GetDatabase(database); IMongoCollection<T> categories = friends.GetCollection<T>(collectionName); categories.Remove(query, true); mongo.Disconnect(); } } #endregion }