using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; using MongoDB; using MongoDB.Driver; using MongoDB.Driver.Builders; namespace DataMipCRM.Common { public class MongoDBHelper { private static readonly string connectionString = ConfigurationManager.AppSettings["mongodbServerList"]; static MongoClientSettings setting = null; MongoServer server = null; public string tableName = "person"; public string databaseName = "Mdemo"; static MongoDBHelper() { var ips = connectionString.Split(';'); var servicesList = new List(); foreach (var ip in ips) { var host = ip.Split(':')[0]; var port = Convert.ToInt32(ip.Split(':')[1]); servicesList.Add(new MongoServerAddress(host, port)); } setting = new MongoClientSettings(); setting.ReplicaSetName = "datamip"; //集群中的服务器列表 setting.Servers = servicesList; } public MongoDBHelper(string databaseName, string tableName) { this.databaseName = databaseName; this.tableName = tableName; server = new MongoClient(setting).GetServer(); } /// /// /// /// /// public bool Remove(Expression> func) { try { var database = server.GetDatabase(databaseName); var collection = database.GetCollection(tableName); var query = Query.Where(func); var result = collection.Remove(query); return result.Response["ok"].AsInt32 > 0 ? true : false; } catch (Exception ex) { return false; } } /// /// /// /// public bool RemoveAll() { try { var database = server.GetDatabase(databaseName); //mongodb中的数据库 var collection = database.GetCollection(tableName); var result = collection.RemoveAll(); return result.Response["ok"].AsInt32 > 0 ? true : false; } catch (Exception ex) { return false; } } #region 单条插入 /// /// 单条插入 /// /// /// public bool Insert(T t) { try { var database = server.GetDatabase(databaseName); //mongodb中的数据库 var collection = database.GetCollection(tableName); var result = collection.Insert(t); return result.DocumentsAffected > 0; } catch (Exception ex) { return false; } } #endregion #region 单条覆盖,如果不存在插入,如果存在覆盖 /// /// 单条覆盖,如果不存在插入,如果存在覆盖 /// /// /// public bool Save(T t) { try { var database = server.GetDatabase(databaseName); //mongodb中的数据库 var collection = database.GetCollection(tableName); var result = collection.Save(t); return result.DocumentsAffected > 0; } catch (Exception ex) { return false; } } #endregion #region 批量插入 /// /// 批量插入 /// /// /// public bool Insert(IEnumerable t) { try { var database = server.GetDatabase(databaseName); //mongodb中的数据库 var collection = database.GetCollection(tableName); collection.InsertBatch(t); return true; } catch (Exception ex) { return false; } } #endregion #region 批量查询 public List Search(Expression> func, bool forcemaster = false) { var list = new List(); try { //是否强制使用 “主服务器” if (forcemaster) { var database = server.GetDatabase(databaseName); //mongodb中的数据库 var collection = database.GetCollection(tableName); list = collection.Find(Query.Where(func)).ToList(); } else { var database = server.GetDatabase(databaseName); //mongodb中的数据库 var collection = database.GetCollection(tableName); list = collection.Find(Query.Where(func)).ToList(); } } catch (Exception ex) { throw; } return list; } #endregion #region 单条查询 /// /// 单条查询 /// /// /// 是否强制使用 “主服务器” /// public T SearchOne(Expression> func, bool forcemaster = false) { T t = default(T); try { if (forcemaster) { var database = server.GetDatabase(databaseName); //mongodb中的数据库 var collection = database.GetCollection(tableName); t = collection.FindOne(Query.Where(func)); } else { var database = server.GetDatabase(databaseName); //mongodb中的数据库 var collection = database.GetCollection(tableName); t = collection.FindOne(Query.Where(func)); } return t; } catch (Exception ex) { return t; } } #endregion /// /// 查询所有数据 /// /// public List SearchAll() { var list = new List(); try { var database = server.GetDatabase(databaseName); //mongodb中的数据库 var collection = database.GetCollection(tableName); list = collection.FindAll().ToList(); return list; } catch (Exception ex) { return list; } } } }