123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271 |
-
- 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<T>
- {
- 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<MongoServerAddress>();
- 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();
- }
- /// <summary>
- ///
- /// </summary>
- /// <param name="func"></param>
- /// <returns></returns>
- public bool Remove(Expression<Func<T, bool>> func)
- {
- try
- {
- var database = server.GetDatabase(databaseName);
- var collection = database.GetCollection<T>(tableName);
- var query = Query<T>.Where(func);
- var result = collection.Remove(query);
- return result.Response["ok"].AsInt32 > 0 ? true : false;
- }
- catch (Exception ex)
- {
- return false;
- }
- }
- /// <summary>
- ///
- /// </summary>
- /// <returns></returns>
- public bool RemoveAll()
- {
- try
- {
- var database = server.GetDatabase(databaseName); //mongodb中的数据库
- var collection = database.GetCollection<T>(tableName);
- var result = collection.RemoveAll();
- return result.Response["ok"].AsInt32 > 0 ? true : false;
- }
- catch (Exception ex)
- {
- return false;
- }
- }
- #region 单条插入
- /// <summary>
- /// 单条插入
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="t"></param>
- public bool Insert(T t)
- {
- try
- {
- var database = server.GetDatabase(databaseName); //mongodb中的数据库
- var collection = database.GetCollection<T>(tableName);
- var result = collection.Insert(t);
- return result.DocumentsAffected > 0;
- }
- catch (Exception ex)
- {
- return false;
- }
- }
- #endregion
- #region 单条覆盖,如果不存在插入,如果存在覆盖
- /// <summary>
- /// 单条覆盖,如果不存在插入,如果存在覆盖
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="t"></param>
- public bool Save(T t)
- {
- try
- {
- var database = server.GetDatabase(databaseName); //mongodb中的数据库
- var collection = database.GetCollection<T>(tableName);
- var result = collection.Save(t);
- return result.DocumentsAffected > 0;
- }
- catch (Exception ex)
- {
- return false;
- }
- }
- #endregion
- #region 批量插入
- /// <summary>
- /// 批量插入
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="t"></param>
- public bool Insert(IEnumerable<T> t)
- {
- try
- {
- var database = server.GetDatabase(databaseName); //mongodb中的数据库
- var collection = database.GetCollection<T>(tableName);
- collection.InsertBatch(t);
- return true;
- }
- catch (Exception ex)
- {
- return false;
- }
- }
- #endregion
- #region 批量查询
- public List<T> Search(Expression<Func<T, bool>> func, bool forcemaster = false)
- {
- var list = new List<T>();
- try
- {
- //是否强制使用 “主服务器”
- if (forcemaster)
- {
- var database = server.GetDatabase(databaseName); //mongodb中的数据库
- var collection = database.GetCollection<T>(tableName);
- list = collection.Find(Query<T>.Where(func)).ToList();
- }
- else
- {
- var database = server.GetDatabase(databaseName); //mongodb中的数据库
- var collection = database.GetCollection<T>(tableName);
- list = collection.Find(Query<T>.Where(func)).ToList();
- }
- }
- catch (Exception ex)
- {
- throw;
- }
- return list;
- }
- #endregion
- #region 单条查询
- /// <summary>
- /// 单条查询
- /// </summary>
- /// <param name="func"></param>
- /// <param name="forcemaster">是否强制使用 “主服务器”</param>
- /// <returns></returns>
- public T SearchOne(Expression<Func<T, bool>> func, bool forcemaster = false)
- {
- T t = default(T);
- try
- {
- if (forcemaster)
- {
- var database = server.GetDatabase(databaseName); //mongodb中的数据库
- var collection = database.GetCollection<T>(tableName);
- t = collection.FindOne(Query<T>.Where(func));
- }
- else
- {
- var database = server.GetDatabase(databaseName); //mongodb中的数据库
- var collection = database.GetCollection<T>(tableName);
- t = collection.FindOne(Query<T>.Where(func));
- }
- return t;
- }
- catch (Exception ex)
- {
- return t;
- }
- }
- #endregion
- /// <summary>
- /// 查询所有数据
- /// </summary>
- /// <returns></returns>
- public List<T> SearchAll()
- {
- var list = new List<T>();
- try
- {
- var database = server.GetDatabase(databaseName); //mongodb中的数据库
- var collection = database.GetCollection<T>(tableName);
- list = collection.FindAll().ToList();
- return list;
- }
- catch (Exception ex)
- {
- return list;
- }
- }
- }
- }
|