MongoDB的C#封装类
2016-07-04 18:34
507 查看
代码:
samus驱动
添加索引:
View Code
==========================
Mongodb中查询Guid数据
Net中Guid传到Mongodb中变成LUUID
js查询1:
查询2:
http://www.cnblogs.com/huangxincheng/category/355399.html http://www.cnblogs.com/ninestates/p/4738328.html http://www.oschina.net/code/snippet_1387007_46081 http://chenzhou123520.iteye.com/blog/1637629
samus驱动
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using MongoDB; using MongoDB.GridFS; namespace CompanyName.DepartmentName.Common.Util { public class MongoHelper { public static readonly string connectionString = "Servers=127.0.0.1:2222;ConnectTimeout=30000;ConnectionLifetime=300000;MinimumPoolSize=8;MaximumPoolSize=256;Pooled=true"; public static readonly string database = "DiDiDataBase"; #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 } }
添加索引:
db.T_OrderInfo.ensureIndex( { OriginPoint : "2dsphere" ,TerminalPoint:"2dsphere" } )
using System; using System.Collections.Generic; using System.Linq; using System.Web; using CompanyName.DepartmentName.Models; using CompanyName.DepartmentName.Common.Util; using MongoDB; using MongoDB.Linq; using MongoDB.GridFS; namespace CompanyName.DepartmentName.Functions { public class PollMongodbData { DBEntities entity = new DBEntities(); public void Poll() { int PageSize = 2000; int CurrentPage = 1; //范围 int Range = 2000;//单位米 List<OrderInfo> result = new List<OrderInfo>(); MongoDBHelper<OrderInfo> helper = new MongoDBHelper<OrderInfo>("T_OrderInfo"); var doc = new Document(); doc.Add("ActiveTime", new Document("$gt", DateTime.Now)); doc.Add("IsDelete", false); var sort = new Document(); sort.Add("CreateTime", 1); bool IsBreak = false; while (!IsBreak) { List<OrderInfo> DataList = MongoHelper.GetList<OrderInfo>("T_OrderInfo", doc, sort, CurrentPage, PageSize); foreach (var data in DataList) { if (data.OrderID == Guid.Empty) { break; } //防止匹配以后再次匹配 if(result.Select(x => x.OrderID).Contains(data.OrderID)) { continue; } //var ActiveTimeDC = new Document(); var OriginPointDC = new Document(); var TerminalPointDC = new Document(); //起点匹配 OriginPointDC.Add("ActiveTime", new Document("$gt", data.ActiveTime.AddMinutes(-30)).Add("$lt", data.ActiveTime.AddMinutes(30))); OriginPointDC.Add("IsDelete", false); OriginPointDC.Add("OrderID", new Document("$ne", data.OrderID)); OriginPointDC.Add("OriginPoint", new Document("$near", new Document("$geometry", new Document("type", "Point").Add("coordinates", data.OriginPoint.coordinates)).Add("$maxDistance", Range))); //终点匹配(因为mongodb不能一次匹配两个地理位置,只能一个个匹配,匹配终点,起点,再进一步进行筛选) TerminalPointDC.Add("ActiveTime", new Document("$gt", data.ActiveTime.AddMinutes(-30)).Add("$lt", data.ActiveTime.AddMinutes(30))); TerminalPointDC.Add("IsDelete", false); TerminalPointDC.Add("OrderID", new Document("$ne", data.OrderID)); TerminalPointDC.Add("TerminalPoint", new Document("$near", new Document("$geometry", new Document("type", "Point").Add("coordinates", data.TerminalPoint.coordinates)).Add("$maxDistance", Range))); List<OrderInfo> ReturnList = MongoHelper.GetList<OrderInfo>("T_OrderInfo", OriginPointDC, 1, 100000000); List<OrderInfo> ReturnList2 = MongoHelper.GetList<OrderInfo>("T_OrderInfo", OriginPointDC, 1, 100000000); var isT = false; foreach (var r in ReturnList) { foreach (var r2 in ReturnList2) { //必须判断result是否已经存在该数据 if (r.OrderID == r2.OrderID&&!result.Select(x=>x.OrderID).Contains(r.OrderID)) { data.BatchID = Guid.NewGuid(); r.BatchID = data.BatchID; result.Add(data); result.Add(r); isT = true; break; } } if (isT) break; } } CurrentPage++; if (DataList.Count() < PageSize) { IsBreak = true; } } foreach (var r in result) { r.IsDelete = true; //删除已匹配数据 helper.Update(r, x => x.OrderID == r.OrderID); T_OrderInfo order = new T_OrderInfo(); order.CreateTime = r.CreateTime; order.OrderID = r.OrderID; order.OriginName = r.OriginName; order.OriginPoint = String.Join(",", r.OriginPoint.coordinates); order.IsDelete = false; order.TerminalName = r.TerminalName; order.TerminalPoint = string.Join(",", r.TerminalPoint.coordinates); order.UpdateTime = r.UpdateTime; order.UserID = r.UserID; order.ActiveTime = r.ActiveTime; order.BatchID = r.BatchID; entity.T_OrderInfo.Add(order); } entity.SaveChanges(); } } }
View Code
==========================
Mongodb中查询Guid数据
Net中Guid传到Mongodb中变成LUUID
js查询1:
function LUUID(uuid) { var hex = uuid.replace(/[{}-]/g, ""); // removes extra characters return new UUID(hex); //creates new UUID } db.getCollection('T_OrderInfo').find({'UserID':LUUID("88460e2a-5eba-454e-b690-9ceb6aa35256")})
查询2:
db.getCollection('T_OrderInfo').find({'UserID':new UUID("88460e2a5eba454eb6909ceb6aa35256")})
http://www.cnblogs.com/huangxincheng/category/355399.html http://www.cnblogs.com/ninestates/p/4738328.html http://www.oschina.net/code/snippet_1387007_46081 http://chenzhou123520.iteye.com/blog/1637629
相关文章推荐
- Mongodb的备份与恢复
- MongoDB的分片集群基本配置教程
- 当MongoDB遇上Spring
- [转] MONGODB基本命令用
- Mongodb 启动时 lock文件访问没有权限处理
- MongoDB的安装及配置文件选项全解
- 详解MongoDB中用sharding将副本集分配至服务器集群的方法
- MongoDB的主从复制及副本集的replSet配置教程
- mongodb监控工具介绍
- Mac OX上安装MongoDb
- MongoDB的基本安装与管理命令脚本总结
- Centos6.5搭建mongodb分片
- mongodb 3.2 集群认证及创建用户
- MongoDB文档
- MongoDB在不同主机间复制数据库和集合的教程
- mongodb怎样给本地数据库添加用户名密码和修改账号密码?
- Mongodb忘记密码
- spring集成mongodb
- Java操作MongoDB
- MongoDB 性能测试