public long CountAll(out string msg) { Mongo mongo = new Mongo(connectionString); MongoDatabase mongoDatabase = mongo.GetDatabase(databaseName) as MongoDatabase; MongoCollection<Document> mongoCollection = mongoDatabase.GetCollection<Document>(collectionName) as MongoCollection<Document>; try { mongo.Connect(); List<EndUser> userList = new List<EndUser>(); IEnumerable<Document> doc = mongoCollection.FindAll().Documents; foreach (Document d in doc) { EndUser user = new EndUser(); user.AutoID = d["AutoID"].ToString(); user.EnduserName = d["EnduserName"].ToString(); user.Identities = d["Identities"].ToString().Split('|'); user.IsValid = bool.Parse(d["IsValid"].ToString()); user.LastModifyTime = DateTime.Parse(d["LastModifyTime"].ToString()); user.SimCardNo = d["SimCardNo"].ToString(); userList.Add(user); } //Document[] docs= doc.ToArray<Document>(); msg = "查询成功"; mongo.Disconnect(); return userList.Count; } catch (Exception ex) { msg = ex.Message; mongo.Disconnect(); return 0; } }
/// <summary> /// 删除操作 /// </summary> /// <param name="person"></param> /// <returns></returns> public void Delete(Expression <Func <T, bool> > func) { using (MongoDB.Mongo mongo = new MongoDB.Mongo(configuration)) { try { mongo.Connect(); var db = mongo.GetDatabase(databaseName); var collection = db.GetCollection <T>(collectionName); //这个地方要注意,一定要加上T参数,否则会当作object类型处理 //导致删除失败 collection.Remove <T>(func); mongo.Disconnect(); } catch (Exception) { mongo.Disconnect(); throw; } } }
/// <summary> ///读取单条记录 /// </summary> /// <param name="person"></param> /// <returns></returns> public T Single(Expression <Func <T, bool> > func) { using (MongoDB.Mongo mongo = new MongoDB.Mongo(configuration)) { try { mongo.Connect(); var db = mongo.GetDatabase(databaseName); var collection = db.GetCollection <T>(collectionName); var single = collection.Linq().FirstOrDefault(func); mongo.Disconnect(); return(single); } catch (Exception) { mongo.Disconnect(); throw; } } }
/// <summary> ///获取集合 /// </summary> /// <param name="person"></param> /// <returns></returns> public List <T> List(int pageIndex, int pageSize, Expression <Func <T, bool> > func, out int pageCount) { pageCount = 0; using (MongoDB.Mongo mongo = new MongoDB.Mongo(configuration)) { try { mongo.Connect(); var db = mongo.GetDatabase(databaseName); var collection = db.GetCollection <T>(collectionName); pageCount = Convert.ToInt32(collection.Count()); var personList = collection.Linq().Where(func).Skip(pageSize * (pageIndex - 1)) .Take(pageSize).Select(i => i).ToList(); mongo.Disconnect(); return(personList); } catch (Exception) { mongo.Disconnect(); throw; } } }
static void Main(string[] args) { Mongo mongo = new Mongo(connectionString); //定义一个文档对象,存入两个键值对 mongo.Connect(); //获取databaseName对应的数据库,不存在则自动创建 MongoDatabase mongoDatabase = mongo.GetDatabase(databaseName) as MongoDatabase; //获取collectionName对应的集合,不存在则自动创建 MongoCollection <Document> mongoCollection = mongoDatabase.GetCollection <Document>(collectionName) as MongoCollection <Document>; try { Document doc = new Document(); doc["ID"] = 1; doc["Msg"] = "Hello World!"; //将这个文档对象插入集合 mongoCollection.Insert(doc); //在集合中查找键值对为ID=1的文档对象 Document docFind = mongoCollection.FindOne(new Document { { "ID", 1 } }); //输出查找到的文档对象中键“Msg”对应的值,并输出 Console.WriteLine(Convert.ToString(docFind["Msg"])); } finally { //关闭链接 mongo.Disconnect(); } }
/// <summary> /// 更新操作 /// </summary> /// <param name="person"></param> /// <returns></returns> public void Update(T t, Expression <Func <T, bool> > func) { using (MongoDB.Mongo mongo = new MongoDB.Mongo(configuration)) { try { mongo.Connect(); var db = mongo.GetDatabase(databaseName); var collection = db.GetCollection <T>(collectionName); collection.Update <T>(t, func, true); mongo.Disconnect(); } catch (Exception) { mongo.Disconnect(); throw; } } }
/// <summary> /// 插入操作 /// </summary> /// <param name="person"></param> /// <returns></returns> public void Insert(T t) { using (MongoDB.Mongo mongo = new MongoDB.Mongo(configuration)) { try { mongo.Connect(); var db = mongo.GetDatabase(databaseName); var collection = db.GetCollection <T>(collectionName); collection.Insert(t, true); mongo.Disconnect(); } catch (Exception) { mongo.Disconnect(); throw; } } }
/// <summary> /// 记录日志 /// </summary> /// <param name="ex">出错的信息</param> public static void LogRecord(Exception ex) { Mongo mongoDBLog = null; try { mongoDBLog = new Mongo(ConfigurationManager.AppSettings["mongoDBConfig"]); mongoDBLog.Connect(); var dbLog = mongoDBLog.GetDatabase("USTALogs"); var collection = dbLog.GetCollection<USTALogs>(DateTime.Now.Date.ToString("yyyy-MM-dd")); USTALogs ustaLogs = new USTALogs { errorTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), errorURL = HttpContext.Current.Request.Url.ToString(), accessIP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"], errorCode = System.Runtime.InteropServices.Marshal.GetHRForException(ex).ToString(), errorObject = ex.Source, errorStackTrace = ex.StackTrace, errorMessage = ex.Message, errorHelpLink = ex.HelpLink, errorMethod = (ex.TargetSite == null ? string.Empty : ex.TargetSite.ToString()) }; collection.Insert(ustaLogs); } catch (Exception mongoDBLogException) { string mongoDBInfoError = HttpContext.Current.Server.MapPath("/LogFiles/WriteMongoDBInfoError_" + DateTime.Now.Date.ToString("yyyy-MM-dd")); if (!System.IO.File.Exists(mongoDBInfoError)) { System.IO.File.Create(mongoDBInfoError); } } finally { if (mongoDBLog != null) { mongoDBLog.Disconnect(); mongoDBLog.Dispose(); } } ////错误信息 //string exceptionMessage = "\n出错页面地址为:" + HttpContext.Current.Request.Url.ToString() + "\n\n访问者IP为:" + HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"] + "\n" + "\n异常码为:" + System.Runtime.InteropServices.Marshal.GetHRForException(ex) + "\n出错对象为:" + ex.Source + "\n堆栈信息为:" + ex.StackTrace + "\n出错函数为:" + ex.TargetSite + "\n出错信息为:" + ex.Message + "\n参考帮助链接为:" + ex.HelpLink + "\n\n"; ////记录错误日志 //log.Error(exceptionMessage); }
public void GivenIHaveNoProfileProperties() { using (var mongo = new Mongo()) { mongo.Connect(); IMongoDatabase db = mongo.GetDatabase("MetaProfiler"); IMongoCollection mongoCollection = db.GetCollection("ProfileProperties"); mongoCollection.Remove(new Document()); mongo.Disconnect(); } }
public List<GeoCity> GetCitiesByLatitudeLongitudeRadius(double latitude, double longitude, int radiusMiles) { using (var mongo = new Mongo(ConfigurationManager.ConnectionStrings["GeoServer"].ConnectionString)) { mongo.Connect(); var geoDB = mongo.GetDatabase("geo"); var citiesCollection = geoDB.GetCollection<GeoCity>("cities"); var filterDocument = new Document(); filterDocument.Add("Coord", new Document().Add("$within", new Document().Add("$center", new object[] { new double[] { latitude, longitude }, radiusMiles / 60.0 }))); filterDocument.Add("G3GeoID", new Document().Add("$ne", null)); var foundCities = citiesCollection.Find(filterDocument).Documents.Distinct(new GeoCityComparer()).OrderBy(city => city.GoogleCode).ToList(); mongo.Disconnect(); return foundCities; } }
public void TestCode() { //链接字符串 string connectionString = "mongodb://localhost"; //数据库名 string databaseName = "myDatabase"; //集合名 string collectionName = "myCollection"; //定义Mongo服务 Mongo mongo = new Mongo(connectionString); //获取databaseName对应的数据库,不存在则自动创建 MongoDatabase mongoDatabase = mongo.GetDatabase(databaseName) as MongoDatabase; //获取collectionName对应的集合,不存在则自动创建 MongoCollection<T> mongoCollection = mongoDatabase.GetCollection<T>(collectionName) as MongoCollection<T>; //链接数据库 mongo.Connect(); try { //定义一个文档对象,存入两个键值对 T doc = new T(); doc["ID"] = 1; doc["Msg"] = "Hello World!"; //将这个文档对象插入集合 mongoCollection.Insert(doc); //在集合中查找键值对为ID=1的文档对象 T docFind = mongoCollection.FindOne(new T { { "ID", 1 } }); //输出查找到的文档对象中键“Msg”对应的值,并输出 Console.WriteLine(Convert.ToString(docFind["Msg"])); } finally { //关闭链接 mongo.Disconnect(); } }
public Document GetMongoData() { //链接字符串 string connectionString = "mongodb://localhost"; //数据库名 string databaseName = "myDatabase"; //集合名 string collectionName = "myCollection"; //定义Mongo服务 Mongo mongo = new Mongo(connectionString); //获取databaseName对应的数据库,不存在则自动创建 MongoDatabase mongoDatabase = mongo.GetDatabase(databaseName) as MongoDatabase; //获取collectionName对应的集合,不存在则自动创建 MongoCollection<Document> mongoCollection = mongoDatabase.GetCollection<Document>(collectionName) as MongoCollection<Document>; //链接数据库 mongo.Connect(); try { //定义一个文档对象,存入两个键值对 Document doc = new Document(); doc["ID"] = 1; doc["Msg"] = "Hello World!"; //将这个文档对象插入集合 mongoCollection.Insert(doc); //在集合中查找键值对为ID=1的文档对象 Document docFind = mongoCollection.FindOne(new Document { { "ID", 1 } }); //输出查找到的文档对象中键“Msg”对应的值,并输出 //txtContent.Text = Convert.ToString(docFind["Msg"]); } finally { //关闭链接 mongo.Disconnect(); } }
public static Document FindOne(string mongoConnsring, string mongoDbName, string mongoCollectionName, object spec) { using (Mongo mongo = new Mongo(mongoConnsring)) { //获取databaseName对应的数据库,不存在则自动创建 MongoDatabase mongoDatabase = mongo.GetDatabase(mongoDbName) as MongoDatabase; //获取collectionName对应的集合,不存在则自动创建 MongoCollection<Document> mongoCollection = mongoDatabase.GetCollection<Document>(mongoCollectionName) as MongoCollection<Document>; //链接数据库 mongo.Connect(); ////在集合中查找键值对为ID=1的文档对象 Document docFind = mongoCollection.FindOne(spec); mongo.Disconnect(); return docFind; } }
public bool DeleteEnduser(string iSimCardNo, out string msg) { Mongo mongo = new Mongo(connectionString); MongoDatabase mongoDatabase = mongo.GetDatabase(databaseName) as MongoDatabase; MongoCollection<Document> mongoCollection = mongoDatabase.GetCollection<Document>(collectionName) as MongoCollection<Document>; try { mongo.Connect(); //List<EndUser> userList = new List<EndUser>(); IEnumerable<Document> doc = mongoCollection.Find(new Document { { "SimCardNo", iSimCardNo } }).Documents; mongoCollection.Remove(new Document { { "SimCardNo", iSimCardNo } }); //foreach (Document d in doc) //{ // EndUser user = new EndUser(); // user.AutoID = d["AutoID"].ToString(); // user.EnduserName = d["EnduserName"].ToString(); // user.Identities = d["Identities"].ToString().Split('|'); // user.IsValid = bool.Parse(d["IsValid"].ToString()); // user.LastModifyTime = DateTime.Parse(d["LastModifyTime"].ToString()); // user.SimCardNo = d["SimCardNo"].ToString(); // userList.Add(user); //} msg = "删除成功"; mongo.Disconnect(); return true; } catch (Exception ex) { msg = ex.Message; mongo.Disconnect(); return false; } }
private bool DeleteAll() { Mongo mongo = new Mongo(connectionString); MongoDatabase mongoDatabase = mongo.GetDatabase(databaseName) as MongoDatabase; MongoCollection<Document> mongoCollection = mongoDatabase.GetCollection<Document>(collectionName) as MongoCollection<Document>; mongo.Connect(); try { mongoCollection.Remove(new Document { }); mongo.Disconnect(); return true; } catch { mongo.Disconnect(); return false; } }
public bool UpdateEndusers(EndUser[] newUsers, out string msg) { Mongo mongo = new Mongo(connectionString); MongoDatabase mongoDatabase = mongo.GetDatabase(databaseName) as MongoDatabase; MongoCollection<Document> mongoCollection = mongoDatabase.GetCollection<Document>(collectionName) as MongoCollection<Document>; try { mongo.Connect(); for (int i = 0; i < newUsers.Length; ++i) { List<EndUser> userList = new List<EndUser>(); Document enduser1 = new Document(); enduser1["AutoID"] = newUsers[i].AutoID; enduser1["EnduserName"] = newUsers[i].EnduserName; enduser1["SimCardNo"] = newUsers[i].SimCardNo; enduser1["Identities"] = getIdentitiesString(newUsers[i].Identities); enduser1["LastModifyTime"] = newUsers[i].LastModifyTime; enduser1["IsValid"] = newUsers[i].IsValid; Document doc = new Document { { "SimCardNo", newUsers[i].SimCardNo } }; if (doc == null) { msg = "不存在该SIM卡号:" + newUsers[i].SimCardNo.ToString(); mongo.Disconnect(); return false; } mongoCollection.Update(new Document("$set", enduser1), doc); } msg = "更新成功"; mongo.Disconnect(); return true; } catch (Exception ex) { msg = ex.Message; mongo.Disconnect(); return false; } }
public bool UpdateEnduser(EndUser newUser, out string msg) { Mongo mongo = new Mongo(connectionString); MongoDatabase mongoDatabase = mongo.GetDatabase(databaseName) as MongoDatabase; MongoCollection<Document> mongoCollection = mongoDatabase.GetCollection<Document>(collectionName) as MongoCollection<Document>; try { mongo.Connect(); List<EndUser> userList = new List<EndUser>(); Document enduser1 = new Document(); enduser1["AutoID"] = newUser.AutoID; enduser1["EnduserName"] = newUser.EnduserName; enduser1["SimCardNo"] = newUser.SimCardNo; enduser1["Identities"] = getIdentitiesString(newUser.Identities); enduser1["LastModifyTime"] = newUser.LastModifyTime; enduser1["IsValid"] = newUser.IsValid; Document doc = new Document { { "SimCardNo", newUser.SimCardNo } }; if (doc == null) { msg = "不存在该SIM卡号"; mongo.Disconnect(); return false; } mongoCollection.Update(new Document("$set", enduser1), doc); //IEnumerable<Document> doc2 = mongoCollection.Find(new Document { { "SimCardNo", newUser.SimCardNo } }).Documents; //foreach (Document d in doc2) //{ // EndUser user = new EndUser(); // user.AutoID = d["AutoID"].ToString(); // user.EnduserName = d["EnduserName"].ToString(); // user.Identities = d["Identities"].ToString().Split('|'); // user.IsValid = bool.Parse(d["IsValid"].ToString()); // user.LastModifyTime = DateTime.Parse(d["LastModifyTime"].ToString()); // user.SimCardNo = d["SimCardNo"].ToString(); // userList.Add(user); //} msg = "更新成功"; mongo.Disconnect(); return true; } catch (Exception ex) { msg = ex.Message; mongo.Disconnect(); return false; } }
public EndUser[] SelectEnduserByName(string iEnduserName, out string msg) { Mongo mongo = new Mongo(connectionString); MongoDatabase mongoDatabase = mongo.GetDatabase(databaseName) as MongoDatabase; MongoCollection<Document> mongoCollection = mongoDatabase.GetCollection<Document>(collectionName) as MongoCollection<Document>; try { mongo.Connect(); List<EndUser> userList = new List<EndUser>(); MongoRegex reg = new MongoRegex(".*" + iEnduserName + ".*", MongoRegexOption.IgnoreCase); Document docEnduserName = new Document { { "name", reg } }; IEnumerable<Document> doc = mongoCollection.Find(docEnduserName).Documents; foreach (Document d in doc) { EndUser user = new EndUser(); user.AutoID = d["AutoID"].ToString(); user.EnduserName = d["EnduserName"].ToString(); user.Identities = d["Identities"].ToString().Split('|'); user.IsValid = bool.Parse(d["IsValid"].ToString()); user.LastModifyTime = DateTime.Parse(d["LastModifyTime"].ToString()); user.SimCardNo = d["SimCardNo"].ToString(); userList.Add(user); } msg = "查询成功"; mongo.Disconnect(); return userList.ToArray(); } catch (Exception ex) { msg = ex.Message; mongo.Disconnect(); return null; } }
public bool InsertEndusers(EndUser[] newUsers, out string msg) { Mongo mongo = new Mongo(connectionString); MongoDatabase mongoDatabase = mongo.GetDatabase(databaseName) as MongoDatabase; MongoCollection<Document> mongoCollection = mongoDatabase.GetCollection<Document>(collectionName) as MongoCollection<Document>; try { mongo.Connect(); for (int i = 0; i < newUsers.Length; ++i) { IEnumerable<Document> doc = mongoCollection.Find(new Document { { "SimCardNo", newUsers[i].SimCardNo } }).Documents; if (doc == null || doc.Count() == 0) { Document enduser1 = new Document(); enduser1["AutoID"] = newUsers[i].AutoID; enduser1["EnduserName"] = newUsers[i].EnduserName; enduser1["SimCardNo"] = newUsers[i].SimCardNo; enduser1["Identities"] = getIdentitiesString(newUsers[i].Identities); enduser1["LastModifyTime"] = newUsers[i].LastModifyTime; enduser1["IsValid"] = newUsers[i].IsValid; mongoCollection.Save(enduser1); } else { msg = "用户已存在"; mongo.Disconnect(); return false; } } msg = "插入成功"; mongo.Disconnect(); return true; } catch (Exception ex) { msg = ex.Message; mongo.Disconnect(); return false; } }
public static void Main(string[] args) { var config = new MongoConfigurationBuilder(); // COMMENT OUT FROM HERE config.Mapping(mapping => { mapping.DefaultProfile(profile => { profile.SubClassesAre(t => t.IsSubclassOf(typeof(MyClass))); }); mapping.Map<MyClass>(); mapping.Map<SubClass>(); }); // TO HERE config.ConnectionString("Server=127.0.0.1"); using (Mongo mongo = new Mongo(config.BuildConfiguration())) { mongo.Connect(); try { var db = mongo.GetDatabase("TestDb"); var collection = db.GetCollection<MyClass>(); MyClass square = new MyClass() { Corners = 4, Name = "Square" }; MyClass circle = new MyClass() { Corners = 0, Name = "Circle" }; SubClass sub = new SubClass() { Name = "SubClass", Corners = 6, Ratio = 3.43 }; collection.Save(square); collection.Save(circle); collection.Save(sub); var superclass = (from item in db.GetCollection<MyClass>("MyClass").Linq() where item.Corners > 1 select item.Corners).ToList(); var subclass = (from item in db.GetCollection<SubClass>("MyClass").Linq() where item.Ratio > 1 select item.Corners).ToList(); Console.WriteLine("Count by LINQ on typed collection: {0}", collection.Linq().Count(x => x.Corners > 1)); Console.WriteLine("Count by LINQ on typed collection2: {0}", db.GetCollection<SubClass>().Linq().Count(x => x.Corners > 1)); //Console.WriteLine("Count by LINQ on typed collection3: {0}", db.GetCollection<SubClass>().Count(new { Corners = Op.GreaterThan(1) })); Console.WriteLine("Count on typed collection: {0}", collection.Count(new { Corners = Op.GreaterThan(1) })); var coll = db.GetCollection("MyClass"); var count = coll.Count(new Document("Corners", Op.GreaterThan(1))); Console.WriteLine("Count: {0}", count); Console.ReadKey(); } finally { mongo.Disconnect(); } } //var main = new MainClass(); //main.Setup(); //main.Run(); }
/// <summary> /// 按日期分页显示日志 /// </summary> /// <param name="date"></param> /// <param name="pageSize"></param> /// <param name="pageNum"></param> /// <returns></returns> public static ResultSet ShowLogs(string date, int pageSize, int pageNum) { long resultCount = 0; IList docResultSet = new List<USTALogs>(); Mongo mongoDBLog = null; try { mongoDBLog = new Mongo(ConfigurationManager.AppSettings["mongoDBConfig"]); mongoDBLog.Connect(); var dbLog = mongoDBLog.GetDatabase("USTALogs"); var collection = dbLog.GetCollection<USTALogs>(date); resultCount = collection.Count(); var queryResultSet = from p in (collection.Linq().Skip(pageSize * (pageNum - 1)).Take(pageSize)) select p; docResultSet = queryResultSet.ToList<USTALogs>(); } catch (Exception mongoDBLogException) { string mongoDBInfoError = HttpContext.Current.Server.MapPath("/LogFiles/GetMongoDBInfoError_" + DateTime.Now.Date.ToString("yyyy-MM-dd")); if (!System.IO.File.Exists(mongoDBInfoError)) { System.IO.File.Create(mongoDBInfoError); } } finally { if (mongoDBLog != null) { mongoDBLog.Disconnect(); mongoDBLog.Dispose(); } } return new ResultSet { resultCount = resultCount, result = docResultSet }; }
public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/html"; Mongo mongo = new Mongo(); try { string room = "chats"; if (context.Request.QueryString["room"] != null && context.Request.QueryString["room"].Length > 0) room = context.Request.QueryString["room"].ToString(); string action = "list"; if (context.Request.QueryString["action"] != null && context.Request.QueryString["action"].Length > 0) action = context.Request.QueryString["action"].ToString(); string msg = ""; if (context.Request.QueryString["msg"] != null && context.Request.QueryString["msg"].Length > 0) msg = context.Request.QueryString["msg"].ToString(); string from = ""; if (context.Request.QueryString["from"] != null && context.Request.QueryString["from"].Length > 0) from = context.Request.QueryString["from"].ToString(); mongo.Connect(); var db = mongo.GetDatabase("chatDB").GetCollection<message>(room); switch (action) { case "rooms": foreach (var r in mongo.GetDatabase("chatDB").GetCollectionNames()) { string r2 = r.Replace("chatDB.", ""); if (r.Contains("system.indexes") ||r.Contains(".$_id_")) { continue; } context.Response.Write(" <a href=\"?room=" + r2 + "&action=list\" target=\"_blank\">" + r2 + "</a><br/> "); } break; case "list": var col = db.Linq().OrderByDescending(doc => doc._id); if (col.Count() > 0) context.Response.Write("<br/><a href=\"?action=clear&room=" + room + "\" target=\"_blank\">删除全部</a><br/><br/> "); else context.Response.Write("无数据"); foreach (var item in col) { context.Response.Write(item.addtime + " [" + item.from + "] 说: " + item.msg + " <a id=\""+item._id+"\" href=\"?room=" + room + "&action=remove&msg=" + item.msg + "&from=" + item.from + "\" target=\"_blank\">删除</a><br/> "); } break; case "remove": if (from.Length > 0 && msg.Length > 0) { db.Remove(new Document { { "from", from }, { "msg", msg } }); } else if (from.Length > 0) { db.Remove(new Document { { "from", from } }); } else if (msg.Length > 0) { db.Remove(new Document { { "msg", msg } }); } break; case "clear": db.Remove(new Document { }); break; case "dropdatabase": mongo.GetDatabase("chatDB").SendCommand("dropDatabase"); break; default: break; } } catch (Exception) { throw; } finally { mongo.Disconnect(); } }
private int ExportToMongo(IEnumerable<ProductSales> sales) { List<MongoDB.Document> documentsToExport = new List<MongoDB.Document>(); foreach (var entry in sales) { var doc = CreateDocument(entry); documentsToExport.Add(doc); } var mongo = new Mongo(); mongo.Connect(); var db = mongo.GetDatabase("supermarkets"); var collection = db.GetCollection("SalesByProductReports"); collection.Insert(documentsToExport); mongo.Disconnect(); var jsonCreator = new JsonCreator(); jsonCreator.WriteJsonFiles(documentsToExport, directoryPath); return documentsToExport.Count(); }