using MongoDB.Driver;
using System; namespace MongoDBDemo
{
public class MongoDb
{
public MongoDb(string host,string timeOut)
{
this.CONNECT_TIME_OUT = timeOut;
this.MONGO_CONN_HOST = host;
} /// <summary>
/// 数据库所在主机
/// </summary>
private readonly string MONGO_CONN_HOST; /// <summary>
/// 数据库所在主机的端口
/// </summary>
private readonly int MONGO_CONN_PORT = ; /// <summary>
/// 连接超时设置 秒
/// </summary>
private readonly string CONNECT_TIME_OUT; /// <summary>
/// 数据库的名称
/// </summary>
private readonly string DB_NAME = "Mdemo"; /// <summary>
/// 得到数据库实例
/// </summary>
/// <returns></returns>
public MongoDatabase GetDataBase()
{
MongoClientSettings mongoSetting = new MongoClientSettings();
//设置连接超时时间
mongoSetting.ConnectTimeout = new TimeSpan(int.Parse(CONNECT_TIME_OUT) * TimeSpan.TicksPerSecond);
//设置数据库服务器
mongoSetting.Server = new MongoServerAddress(MONGO_CONN_HOST, MONGO_CONN_PORT);
//创建Mongo的客户端
MongoClient client = new MongoClient(mongoSetting);
//得到服务器端并且生成数据库实例
return client.GetServer().GetDatabase(DB_NAME);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace MongoDBDemo
{
/// <summary>
/// Mongodb数据库的字段特性 主要是设置索引之用
/// </summary>
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
public class MongoDbFieldAttribute : Attribute
{
/// <summary>
/// 是否是索引
/// </summary>
public bool IsIndex { get; set; } /// <summary>
/// 是否是唯一的 默认flase
/// </summary>
public bool Unique { get; set; } /// <summary>
/// 是否是升序 默认true
/// </summary>
public bool Ascending { get; set; } public MongoDbFieldAttribute(bool _isIndex)
{
this.IsIndex = _isIndex;
this.Unique = false;
this.Ascending = true;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using MongoDB.Driver;
using MongoDB.Bson;
using MongoDB.Driver.Builders;
using System.Reflection; namespace MongoDBDemo
{
/// <summary>
/// Mongo db的数据库帮助类
/// </summary>
public class MongoDbHelper
{
/// <summary>
/// 数据库的实例
/// </summary>
private MongoDatabase _db; /// <summary>
/// ObjectId的键
/// </summary>
private readonly string OBJECTID_KEY = "_id"; public MongoDbHelper(string host,string timeOut)
{
this._db = new MongoDb(host,timeOut).GetDataBase();
} public MongoDbHelper(MongoDatabase db)
{
this._db = db;
} public T GetNextSequence<T>(IMongoQuery query, SortByDocument sortBy, UpdateDocument update, string collectionName,string indexName)
{
if (this._db == null)
{
return default(T);
}
try
{
MongoCollection<T> mc = this._db.GetCollection<T>(collectionName);
query = this.InitQuery(query);
sortBy = this.InitSortBy(sortBy, OBJECTID_KEY);
update = this.InitUpdateDocument(update, indexName);
var ido = mc.FindAndModify(query, sortBy, update, true, false); return ido.GetModifiedDocumentAs<T>();
}
catch (Exception ex)
{
return default(T);
}
} #region 插入数据
/// <summary>
/// 将数据插入进数据库
/// </summary>
/// <typeparam name="T">需要插入数据的类型</typeparam>
/// <param name="t">需要插入的具体实体</param>
public bool Insert<T>(T t)
{
//集合名称
string collectionName = typeof(T).Name;
return Insert<T>(t, collectionName);
} /// <summary>
/// 将数据插入进数据库
/// </summary>
/// <typeparam name="T">需要插入数据库的实体类型</typeparam>
/// <param name="t">需要插入数据库的具体实体</param>
/// <param name="collectionName">指定插入的集合</param>
public bool Insert<T>(T t, string collectionName)
{
if (this._db == null)
{
return false;
}
try
{
MongoCollection<BsonDocument> mc = this._db.GetCollection<BsonDocument>(collectionName);
//将实体转换为bson文档
BsonDocument bd = t.ToBsonDocument();
//进行插入操作
WriteConcernResult result = mc.Insert(bd);
if (!string.IsNullOrEmpty(result.ErrorMessage))
{
return false;
}
return true;
}
catch (Exception ex)
{
return false;
}
} /// <summary>
/// 批量插入数据
/// </summary>
/// <typeparam name="T">需要插入数据库的实体类型</typeparam>
/// <param name="list">需要插入数据的列表</param>
public bool Insert<T>(List<T> list)
{
//集合名称
string collectionName = typeof(T).Name;
return this.Insert<T>(list, collectionName);
} /// <summary>
/// 批量插入数据
/// </summary>
/// <typeparam name="T">需要插入数据库的实体类型</typeparam>
/// <param name="list">需要插入数据的列表</param>
/// <param name="collectionName">指定要插入的集合</param>
public bool Insert<T>(List<T> list, string collectionName)
{
if (this._db == null)
{
return false;
}
try
{
MongoCollection<BsonDocument> mc = this._db.GetCollection<BsonDocument>(collectionName);
//创建一个空间bson集合
List<BsonDocument> bsonList = new List<BsonDocument>();
//批量将数据转为bson格式 并且放进bson文档
list.ForEach(t => bsonList.Add(t.ToBsonDocument()));
//批量插入数据
mc.InsertBatch(bsonList);
return true;
}
catch (Exception ex)
{
return false;
}
}
#endregion #region 查询数据 #region 查询所有记录
/// <summary>
/// 查询一个集合中的所有数据
/// </summary>
/// <typeparam name="T">该集合数据的所属类型</typeparam>
/// <param name="collectionName">指定集合的名称</param>
/// <returns>返回一个List列表</returns>
public List<T> FindAll<T>(string collectionName)
{
if (this._db == null)
{
return null;
}
try
{
MongoCollection<T> mc = this._db.GetCollection<T>(collectionName);
//以实体方式取出其数据集合
MongoCursor<T> mongoCursor = mc.FindAll();
//直接转化为List返回
return mongoCursor.ToList<T>();
}
catch (Exception ex)
{
return null;
}
} /// <summary>
/// 查询一个集合中的所有数据 其集合的名称为T的名称
/// </summary>
/// <typeparam name="T">该集合数据的所属类型</typeparam>
/// <returns>返回一个List列表</returns>
public List<T> FindAll<T>()
{
string collectionName = typeof(T).Name;
return FindAll<T>(collectionName);
}
#endregion #region 查询一条记录
/// <summary>
/// 查询索引最大的一条记录
/// </summary>
/// <typeparam name="T">该数据所属的类型</typeparam>
/// <param name="collectionName">去指定查询的集合</param>
/// <param name="sort">排序字段</param>
/// <returns>返回一个实体类型</returns>
public T FindOneToIndexMax<T>(string collectionName, string[] sort)
{
return FindOneToIndexMax<T>(null, collectionName, sort);
} /// <summary>
/// 查询索引最大的一条记录
/// </summary>
/// <typeparam name="T">该数据所属的类型</typeparam>
/// <param name="query">查询的条件 可以为空</param>
/// <param name="collectionName">去指定查询的集合</param>
/// <param name="sort">排序字段</param>
/// <returns>返回一个实体类型</returns>
public T FindOneToIndexMax<T>(IMongoQuery query,string collectionName, string[] sort)
{
if (this._db == null)
{
return default(T);
}
try
{
MongoCollection<T> mc = this._db.GetCollection<T>(collectionName);
query = this.InitQuery(query);
T t = mc.Find(query).SetSortOrder(SortBy.Descending(sort)).FirstOrDefault<T>();
return t;
}
catch (Exception ex)
{
return default(T);
}
}
/// <summary>
/// 查询一条记录
/// </summary>
/// <typeparam name="T">该数据所属的类型</typeparam>
/// <param name="query">查询的条件 可以为空</param>
/// <param name="collectionName">去指定查询的集合</param>
/// <returns>返回一个实体类型</returns>
public T FindOne<T>(IMongoQuery query, string collectionName)
{
if (this._db == null)
{
return default(T);
}
try
{
MongoCollection<T> mc = this._db.GetCollection<T>(collectionName);
query = this.InitQuery(query);
T t = mc.FindOne(query);
return t;
}
catch (Exception ex)
{
return default(T);
}
} /// <summary>
/// 查询一条记录
/// </summary>
/// <typeparam name="T">该数据所属的类型</typeparam>
/// <param name="collectionName">去指定查询的集合</param>
/// <returns>返回一个实体类型</returns>
public T FindOne<T>(string collectionName)
{
return FindOne<T>(null, collectionName);
} /// <summary>
/// 查询一条记录
/// </summary>
/// <typeparam name="T">该数据所属的类型</typeparam>
/// <returns>返回一个实体类型</returns>
public T FindOne<T>()
{
string collectionName = typeof(T).Name;
return FindOne<T>(null, collectionName);
} /// <summary>
/// 查询一条记录
/// </summary>
/// <typeparam name="T">该数据所属的类型</typeparam>
/// <param name="query">查询的条件 可以为空</param>
/// <returns>返回一个实体类型</returns>
public T FindOne<T>(IMongoQuery query)
{
string collectionName = typeof(T).Name;
return FindOne<T>(query, collectionName);
}
#endregion #region 普通的条件查询
/// <summary>
/// 根据指定条件查询集合中的数据
/// </summary>
/// <typeparam name="T">该集合数据的所属类型</typeparam>
/// <param name="query">指定的查询条件 比如Query.And(Query.EQ("username","admin"),Query.EQ("password":"admin"))</param>
/// <param name="collectionName">指定的集合的名称</param>
/// <returns>返回一个List列表</returns>
public List<T> Find<T>(IMongoQuery query, string collectionName)
{
if (this._db == null)
{
return null;
}
try
{
MongoCollection<T> mc = this._db.GetCollection<T>(collectionName);
query = this.InitQuery(query);
MongoCursor<T> mongoCursor = mc.Find(query);
return mongoCursor.ToList<T>();
}
catch (Exception ex)
{
return null;
}
} /// <summary>
/// 根据指定条件查询集合中的数据
/// </summary>
/// <typeparam name="T">该集合数据的所属类型</typeparam>
/// <param name="query">指定的查询条件 比如Query.And(Query.EQ("username","admin"),Query.EQ("password":"admin"))</param>
/// <returns>返回一个List列表</returns>
public List<T> Find<T>(IMongoQuery query)
{
string collectionName = typeof(T).Name;
return this.Find<T>(query,collectionName);
}
#endregion #region 分页查询 PageIndex和PageSize模式 在页数PageIndex大的情况下 效率明显变低 /// <summary>
/// 分页查询 PageIndex和PageSize模式 在页数PageIndex大的情况下 效率明显变低
/// </summary>
/// <typeparam name="T">所需查询的数据的实体类型</typeparam>
/// <param name="query">查询的条件</param>
/// <param name="pageIndex">当前的页数</param>
/// <param name="pageSize">当前的尺寸</param>
/// <param name="sortBy">排序方式</param>
/// <param name="collectionName">集合名称</param>
/// <returns>返回List列表</returns>
public List<T> Find<T>(IMongoQuery query, int pageIndex, int pageSize, SortByDocument sortBy, string collectionName)
{
if (this._db == null)
{
return null;
}
try
{
MongoCollection<T> mc = this._db.GetCollection<T>(collectionName);
MongoCursor<T> mongoCursor = null;
query = this.InitQuery(query);
sortBy = this.InitSortBy(sortBy, OBJECTID_KEY);
//如页序号为0时初始化为1
pageIndex = pageIndex == ? : pageIndex;
//按条件查询 排序 跳数 取数
mongoCursor = mc.Find(query).SetSortOrder(sortBy).SetSkip((pageIndex - ) * pageSize).SetLimit(pageSize);
return mongoCursor.ToList<T>();
}
catch (Exception ex)
{
return null;
}
} /// <summary>
/// 分页查询 PageIndex和PageSize模式 在页数PageIndex大的情况下 效率明显变低
/// </summary>
/// <typeparam name="T">所需查询的数据的实体类型</typeparam>
/// <param name="query">查询的条件</param>
/// <param name="pageIndex">当前的页数</param>
/// <param name="pageSize">当前的尺寸</param>
/// <param name="sortBy">排序方式</param>
/// <returns>返回List列表</returns>
public List<T> Find<T>(IMongoQuery query, int pageIndex, int pageSize, SortByDocument sortBy)
{
string collectionName = typeof(T).Name;
return this.Find<T>(query, pageIndex, pageSize, sortBy, collectionName);
} #endregion #region 分页查询 指定索引最后项-PageSize模式 /// <summary>
/// 分页查询 指定索引最后项-PageSize模式
/// </summary>
/// <typeparam name="T">所需查询的数据的实体类型</typeparam>
/// <param name="query">查询的条件 没有可以为null</param>
/// <param name="indexName">索引名称</param>
/// <param name="lastKeyValue">最后索引的值</param>
/// <param name="pageSize">分页的尺寸</param>
/// <param name="sortType">排序类型 1升序 -1降序 仅仅针对该索引</param>
/// <param name="collectionName">指定的集合名称</param>
/// <returns>返回一个List列表数据</returns>
public List<T> Find<T>(IMongoQuery query, string indexName, object lastKeyValue, int pageSize, int sortType, string collectionName)
{
if (this._db == null)
{
return null;
}
try
{
MongoCollection<T> mc = this._db.GetCollection<T>(collectionName);
MongoCursor<T> mongoCursor = null;
query = this.InitQuery(query); //判断升降序后进行查询
if (sortType > )
{
//升序
if (lastKeyValue != null)
{
//有上一个主键的值传进来时才添加上一个主键的值的条件
query = Query.And(query, Query.GT(indexName, BsonValue.Create(lastKeyValue)));
}
//先按条件查询 再排序 再取数
mongoCursor = mc.Find(query).SetSortOrder(new SortByDocument(indexName, )).SetLimit(pageSize);
}
else
{
//降序
if (lastKeyValue != null)
{
query = Query.And(query, Query.LT(indexName, BsonValue.Create(lastKeyValue)));
}
mongoCursor = mc.Find(query).SetSortOrder(new SortByDocument(indexName, -)).SetLimit(pageSize);
}
return mongoCursor.ToList<T>();
}
catch (Exception ex)
{
return null;
}
} /// <summary>
/// 分页查询 指定索引最后项-PageSize模式
/// </summary>
/// <typeparam name="T">所需查询的数据的实体类型</typeparam>
/// <param name="query">查询的条件 没有可以为null</param>
/// <param name="indexName">索引名称</param>
/// <param name="lastKeyValue">最后索引的值</param>
/// <param name="pageSize">分页的尺寸</param>
/// <param name="sortType">排序类型 1升序 -1降序 仅仅针对该索引</param>
/// <returns>返回一个List列表数据</returns>
public List<T> Find<T>(IMongoQuery query, string indexName, object lastKeyValue, int pageSize, int sortType)
{
string collectionName = typeof(T).Name;
return this.Find<T>(query, indexName, lastKeyValue, pageSize, sortType, collectionName);
} /// <summary>
/// 分页查询 指定ObjectId最后项-PageSize模式
/// </summary>
/// <typeparam name="T">所需查询的数据的实体类型</typeparam>
/// <param name="query">查询的条件 没有可以为null</param>
/// <param name="lastObjectId">上一条记录的ObjectId 没有可以为空</param>
/// <param name="pageSize">每页尺寸</param>
/// <param name="sortType">排序类型 1升序 -1降序 仅仅针对_id</param>
/// <param name="collectionName">指定去查询集合的名称</param>
/// <returns>返回一个List列表数据</returns>
public List<T> Find<T>(IMongoQuery query, string lastObjectId, int pageSize, int sortType, string collectionName)
{
return this.Find<T>(query, OBJECTID_KEY, new ObjectId(lastObjectId), pageSize, sortType, collectionName);
} /// <summary>
/// 分页查询 指定ObjectId最后项-PageSize模式
/// </summary>
/// <typeparam name="T">所需查询的数据的实体类型</typeparam>
/// <param name="query">查询的条件 没有可以为null</param>
/// <param name="lastObjectId">上一条记录的ObjectId 没有可以为空</param>
/// <param name="pageSize">每页尺寸</param>
/// <param name="sortType">排序类型 1升序 -1降序 仅仅针对_id</param>
/// <returns>返回一个List列表数据</returns>
public List<T> Find<T>(IMongoQuery query, string lastObjectId, int pageSize, int sortType)
{
string collectionName = typeof(T).Name;
return Find<T>(query, lastObjectId, pageSize, sortType, collectionName);
} #endregion #endregion #region 更新数据 /// <summary>
/// 更新数据
/// </summary>
/// <typeparam name="T">更新的数据 所属的类型</typeparam>
/// <param name="query">更新数据的查询</param>
/// <param name="update">需要更新的文档</param>
/// <param name="collectionName">指定更新集合的名称</param>
public bool Update<T>(IMongoQuery query, IMongoUpdate update, string collectionName)
{
if (this._db == null)
{
return false;
}
try
{
MongoCollection<T> mc = this._db.GetCollection<T>(collectionName);
query = this.InitQuery(query);
//更新数据
WriteConcernResult result = mc.Update(query, update, UpdateFlags.Multi);
return true;
}
catch (Exception ex)
{
return false;
}
} /// <summary>
/// 更新数据
/// </summary>
/// <typeparam name="T">更新的数据 所属的类型</typeparam>
/// <param name="query">更新数据的查询</param>
/// <param name="update">需要更新的文档</param>
public bool Update<T>(IMongoQuery query, IMongoUpdate update)
{
string collectionName = typeof(T).Name;
return this.Update<T>(query, update, collectionName);
} #endregion #region 移除/删除数据
/// <summary>
/// 移除指定的数据
/// </summary>
/// <typeparam name="T">移除的数据类型</typeparam>
/// <param name="query">移除的数据条件</param>
/// <param name="collectionName">指定的集合名词</param>
public bool Remove<T>(IMongoQuery query, string collectionName)
{
if (this._db == null)
{
return false;
}
try
{
MongoCollection<T> mc = this._db.GetCollection<T>(collectionName);
query = this.InitQuery(query);
//根据指定查询移除数据
mc.Remove(query);
return true;
}
catch (Exception ex)
{
return false;
}
} /// <summary>
/// 移除指定的数据
/// </summary>
/// <typeparam name="T">移除的数据类型</typeparam>
/// <param name="query">移除的数据条件</param>
public bool Remove<T>(IMongoQuery query)
{
string collectionName = typeof(T).Name;
return this.Remove<T>(query,collectionName);
} /// <summary>
/// 移除实体里面所有的数据
/// </summary>
/// <typeparam name="T">移除的数据类型</typeparam>
public bool ReomveAll<T>()
{
string collectionName = typeof(T).Name;
return this.Remove<T>(null,collectionName);
} /// <summary>
/// 移除实体里面所有的数据
/// </summary>
/// <typeparam name="T">移除的数据类型</typeparam>
/// <param name="collectionName">指定的集合名称</param>
public bool RemoveAll<T>(string collectionName)
{
return this.Remove<T>(null,collectionName);
}
#endregion #region 创建索引
/// <summary>
/// 创建索引
/// </summary>
/// <typeparam name="T">需要创建索引的实体类型</typeparam>
public bool CreateIndex<T>()
{
if (this._db == null)
{
return false;
}
try
{
string collectionName = typeof(T).Name;
MongoCollection<BsonDocument> mc = this._db.GetCollection<BsonDocument>(collectionName); PropertyInfo[] propertys = typeof(T).GetProperties(BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty);
//得到该实体类型的属性
foreach (PropertyInfo property in propertys)
{
//在各个属性中得到其特性
foreach (object obj in property.GetCustomAttributes(true))
{
MongoDbFieldAttribute mongoField = obj as MongoDbFieldAttribute;
if (mongoField != null)
{// 此特性为mongodb的字段属性 IndexKeysBuilder indexKey;
if (mongoField.Ascending)
{
//升序 索引
indexKey = IndexKeys.Ascending(property.Name);
}
else
{
//降序索引
indexKey = IndexKeys.Descending(property.Name);
}
//创建该属性
mc.CreateIndex(indexKey, IndexOptions.SetUnique(mongoField.Unique));
}
}
}
return true;
}
catch (Exception ex)
{
return false;
}
}
#endregion #region 获取表的行数
/// <summary>
/// 获取数据表总行数
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="query"></param>
/// <param name="collectionName"></param>
/// <returns></returns>
public long GetCount<T>(IMongoQuery query,string collectionName)
{
if (this._db == null)
{
return ;
}
try
{
MongoCollection<T> mc = this._db.GetCollection<T>(collectionName);
if (query == null)
{
return mc.Count();
}
else
{
return mc.Count(query);
}
}
catch (Exception ex)
{
return ;
}
}
/// <summary>
/// 获取数据表总行数
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="query"></param>
/// <returns></returns>
public long GetCount<T>(IMongoQuery query)
{
string collectionName = typeof(T).Name;
return GetCount<T>(query,collectionName);
} #endregion #region 获取集合的存储大小
/// <summary>
/// 获取集合的存储大小
/// </summary>
/// <typeparam name="T">该集合对应的实体类</typeparam>
/// <returns>返回一个long型</returns>
public long GetDataSize<T>()
{
string collectionName = typeof(T).Name;
return GetDataSize(collectionName);
} /// <summary>
/// 获取集合的存储大小
/// </summary>
/// <param name="collectionName">该集合对应的名称</param>
/// <returns>返回一个long型</returns>
public long GetDataSize(string collectionName)
{
if (this._db == null)
{
return ;
}
try
{
MongoCollection<BsonDocument> mc = this._db.GetCollection<BsonDocument>(collectionName);
return mc.GetTotalStorageSize();
}
catch (Exception ex)
{
return ;
}
} #endregion #region 私有的一些辅助方法
/// <summary>
/// 初始化查询记录 主要当该查询条件为空时 会附加一个恒真的查询条件,防止空查询报错
/// </summary>
/// <param name="query">查询的条件</param>
/// <returns></returns>
private IMongoQuery InitQuery(IMongoQuery query)
{
if (query == null)
{
//当查询为空时 附加恒真的条件 类似SQL:1=1的语法
query = Query.Exists(OBJECTID_KEY);
}
return query;
} /// <summary>
/// 初始化排序条件 主要当条件为空时 会默认以ObjectId递增的一个排序
/// </summary>
/// <param name="sortBy"></param>
/// <param name="sortByName"></param>
/// <returns></returns>
private SortByDocument InitSortBy(SortByDocument sortBy, string sortByName)
{
if (sortBy == null)
{
//默认ObjectId 递增
sortBy = new SortByDocument(sortByName, -);
}
return sortBy;
} private UpdateDocument InitUpdateDocument(UpdateDocument update,string indexName)
{
if (update == null)
{
update = new UpdateDocument("$inc", new QueryDocument(indexName, ));
}
return update;
}
#endregion
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MongoDB;
using MongoDbDemo;
using MongoDB.Driver;
using MongoDB.Bson;
using DAL.Entity;
using DAL;
using MongoDB.Driver.Builders;
using System.Diagnostics; namespace MongoDbDemo.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/ public ActionResult Index()
{
return Content("MongoDbDemo");
} #region INSERT
/// <summary>
/// 添加用户
/// </summary>
/// <returns></returns>
public ActionResult Ruser()
{
try
{
string name = Request["name"];
string age = Request["age"];
User user1 = new User { Uname = name, Age = age };
MongoDbHelper mh = new MongoDbHelper("127.0.0.1", "");
if (mh.Insert<User>(user1))
{
return Json(new { success = "true" });
}
}
catch (Exception)
{
return Json(new { success = "filled" });
throw;
}
return Json(new { success = "filled" });
}
#endregion #region SELECT
/// <summary>
/// 查询一个集合中的所有数据
/// </summary>
/// <returns></returns>
public ActionResult Seluser()
{
MongoDbHelper mh = new MongoDbHelper("127.0.0.1", "");
List<User> users = mh.FindAll<User>();
return Json(new { success="true"});
} /// <summary>
/// 按条件查询一条数据
/// </summary>
/// <returns></returns>
public ActionResult SelOne()
{
string name = Request["name"];
string age=Request["age"];
MongoDbHelper mh = new MongoDbHelper("127.0.0.1", "");
User users = mh.FindOne<User>(Query.And(Query.EQ("Uname", name), Query.EQ("Age", age)));
return Json(new {success="true" ,users=users});
} /// <summary>
/// 分页查询
/// </summary>
/// <returns></returns>
public ActionResult SelPage()
{
int pageindex=int.Parse(Request["pageindex"]);//页索引
int pagesize = int.Parse(Request["pagesize"]);//行数
MongoDbHelper mh = new MongoDbHelper("127.0.0.1", "");
Stopwatch sw1 = new Stopwatch();
sw1.Start();
List<User> users = mh.Find<User>(null,pageindex,pagesize,null);
return Json(new {success="true",users=users });
}
#endregion #region UPDATE
/// <summary>
/// 修改信息
/// </summary>
/// <returns></returns>
public ActionResult upduser()
{
MongoDbHelper mh = new MongoDbHelper("127.0.0.1", "");
if (mh.Update<User>(Query.EQ("Uname", "阿斯达"), Update.Set("Uname", "阿斯达s"), "User"))
{
return Json(new { success = "true" });
}
else
{
return Json(new { success = "fales" });
} }
#endregion #region DELETE
/// <summary>
/// 删除消息
/// </summary>
/// <returns></returns>
public ActionResult deluser()
{
MongoDbHelper mh = new MongoDbHelper("127.0.0.1", "");
if (mh.Remove<User>(Query.EQ("Uname", "阿斯达s")))
{
return Json(new { success = "true" });
}
else {
return Json(new { success = "fales" });
}
}
#endregion
}
}

Query.All("name", "a","b"); //通过多个元素来匹配数组

Query.And(Query.EQ("name","a"), Query.EQ("title", "t"));//同时满足多个条件

Query.EQ("name", "a");//等于

Query.Exists("type", true);//判断键值是否存在

Query.GT("value", 2);//大于>

Query.GTE("value", 3);//大于等于>=

Query.In("name", "a","b");//包括指定的所有值,可以指定不同类型的条件和值

Query.LT("value", 9);//小于<

Query.LTE("value", 8);//小于等于<=

Query.Mod("value", 3, 1);//将查询值除以第一个给定值,若余数等于第二个给定值则返回该结果

Query.NE("name", "c");//不等于

Query.Nor(Array);//不包括数组中的值

Query.Not("name");//元素条件语句

Query.NotIn("name", "a",2);//返回与数组中所有条件都不匹配的文档

Query.Or(Query.EQ("name","a"), Query.EQ("title", "t"));//满足其中一个条件

Query.Size("name", 2);//给定键的长度

Query.Type("_id", BsonType.ObjectId);//给定键的类型

Query.Where(BsonJavaScript);//执行JavaScript

Query.Matches("Title",str);//模糊查询 相当于sql中like -- str可包含正则表达式

网上找的,写的不错,收藏了,简单的使用.NET 进行MongoDB的增删改查

C# 访问MongoDB 通用方法类的更多相关文章

  1. 使用Spring访问Mongodb的方法大全——Spring Data MongoDB查询指南

    1.概述 Spring Data MongoDB 是Spring框架访问mongodb的神器,借助它可以非常方便的读写mongo库.本文介绍使用Spring Data MongoDB来访问mongod ...

  2. 使用Spring访问Mongodb的方法大全——Spring Data MongoDB

    1.概述 Spring Data MongoDB 是Spring框架访问mongodb的神器,借助它可以非常方便的读写mongo库.本文介绍使用Spring Data MongoDB来访问mongod ...

  3. 十二、.net core(.NET 6)添加通用的访问webapi的方法(包括HttpClient和HttpWebRequest)

    开发通用的访问webapi方法. 在common工具文件夹下,新建一个类库项目:Wsk.Core.WebHelper,并引用Package包项目,然后新建一个类HttpClientHelper,用于使 ...

  4. JDBC工具类 访问数据库 增删改查CRUD的通用方法

    1 package com.zmh.util; 2 3 import java.sql.*; 4 import java.util.ArrayList; 5 import java.util.Hash ...

  5. WebForm.aspx 页面通过 AJAX 访问WebForm.aspx.cs类中的方法,获取数据

    WebForm.aspx 页面通过 AJAX 访问WebForm.aspx.cs类中的方法,获取数据 WebForm1.aspx 页面 (原生AJAX请求,写法一) <%@ Page Langu ...

  6. C#导出数据到Excel通用的方法类

    导出数据到Excel通用的方法类,请应对需求自行修改. 资源下载列表 using System.Data; using System.IO; namespace IM.Common.Tools { p ...

  7. perl 使用SUPER类来访问覆盖的方法

    有时候,你希望一个衍生类的方法表现得象基类中的某些方法的封装器 这就是 SUPER 伪类提供便利的地方.它令你能够调用一个覆盖了的基类方法,而不用声明 是哪个类定义了该方 法.(注:不要把这个和第十一 ...

  8. WebForm.aspx 页面通过 AJAX 访问WebForm.aspx.cs类中的方法,获取数据(转)

    WebForm.aspx 页面通过 AJAX 访问WebForm.aspx.cs类中的方法,获取数据 WebForm1.aspx 页面 (原生AJAX请求,写法一) <%@ Page Langu ...

  9. Object类中通用方法之:toString()方法

    1.Java所有的对象都是Object类的实例,都可以直接调用该类中定义的方法,这些方法称为通用方法 2.toString()方法即为Object类中定义的通用方法之一 3.平时我们如果在控制台直接打 ...

随机推荐

  1. Could not load type from string value 'DALMSSQL.DBSessionFactory,DALMSSQL'.

    问题: 原因: DAL.dll不在程序目录下        --调了老半天.

  2. MsXml创建和解析XML示例

    一.MsXml创建XML文档示例 // XmlCreationDemo.cpp #include <stdlib.h> #include <stdio.h> // 引入MSXM ...

  3. Sklearn库例子——决策树分类

    Sklearn上关于决策树算法使用的介绍:http://scikit-learn.org/stable/modules/tree.html 1.关于决策树:决策树是一个非参数的监督式学习方法,主要用于 ...

  4. Oracle 11g r2 安装

    Help Center:http://docs.oracle.com/cd/E11882_01/install.112/e24326/toc.htm#i1011296 前提:linux需要安装图形化介 ...

  5. Javascript中数组与字典(即map)的使用

    简述: 简单记录一下数据结构Map和数组, 其实在Javascript这种弱类型的脚本语言中,数组同时也就是字典,下面主要就是字典数组的简易使用   代码: 1. 数组中添加map <!DOCT ...

  6. python 模块库

    python mod --------------------os              https://segmentfault.com/a/1190000003061079logging    ...

  7. 安装zabbix,make的时候报错

    CDPATH= && /bin/bash /install/Mesa-/bin/missing aclocal-1.14 -I m4 /install/Mesa-/bin/missin ...

  8. [Maven] - Eclipse "maven compiler plugin" 冲突解决

    刚安装最新的Maven 3.2.5,在eclipse中使用maven的Run As->Maven Install,总会提示: Failed to execute goal org.apache. ...

  9. Best Practices for Performance_3.Improving Layout Performance 优化布局

    http://developer.android.com/training/improving-layouts/index.html 1. 优化布局层次 1)  每增加一个View或者布局,都会增加额 ...

  10. MVC4 +EasyUI 使用TreeGrid 方法

    用easyui已经有2年了,换了新环境,要求用mvc开发,所以想把原来的项目直接用mvc重构. 在使用TreeGird的时候出现了问题,发现在转换为treegrid的json 很费劲,一直都是用的ea ...