C# 訪問MongoDB 通用方法類

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 = 27017;  /// <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 == 0 ? 1 : pageIndex;  //按條件查詢 排序 跳數 取數  mongoCursor = mc.Find(query).SetSortOrder(sortBy).SetSkip((pageIndex - 1) * 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 > 0)  {  //升序  if (lastKeyValue != null)  {  //有上一個主鍵的值傳進來時才添加上一個主鍵的值的條件  query = Query.And(query, Query.GT(indexName, BsonValue.Create(lastKeyValue)));  }  //先按條件查詢 再排序 再取數  mongoCursor = mc.Find(query).SetSortOrder(new SortByDocument(indexName, 1)).SetLimit(pageSize);  }  else  {  //降序  if (lastKeyValue != null)  {  query = Query.And(query, Query.LT(indexName, BsonValue.Create(lastKeyValue)));  }  mongoCursor = mc.Find(query).SetSortOrder(new SortByDocument(indexName, -1)).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 0;  }  try  {  MongoCollection<T> mc = this._db.GetCollection<T>(collectionName);  if (query == null)  {  return mc.Count();  }  else  {  return mc.Count(query);  }                 }  catch (Exception ex)  {  return 0;  }  }  /// <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 0;  }  try  {  MongoCollection<BsonDocument> mc = this._db.GetCollection<BsonDocument>(collectionName);  return mc.GetTotalStorageSize();  }  catch (Exception ex)  {  return 0;  }  }  #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, -1);  }  return sortBy;  }  private UpdateDocument InitUpdateDocument(UpdateDocument update,string indexName)  {  if (update == null)  {  update = new UpdateDocument("$inc", new QueryDocument(indexName, 0));  }  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", "1000");  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", "1000");  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", "1000");  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", "1000");  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", "1000");  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", "1000");  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的增刪改查

轉載于:https://www.cnblogs.com/Luouy/p/6098901.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371974.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371974.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371974.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

html網頁背景圖片平鋪代碼,jQuery圖片平鋪效果制作網頁背景圖片平鋪代碼

插件描述&#xff1a;jQuery圖片平鋪效果制作網頁背景圖片平鋪代碼調用JS文件調用插件方法$(function(){// 插件初始化$(img).jqthumb({classname : jqthumb, // 類名. 默認是 jqthumbwidth : 100%, // 新的圖像裁剪后寬度. 默認是 100px.height : 100%, // 新的圖像裁剪后高度…

使用保險絲結構管理MQ和ESB的大型部署,第I部分

FuseSource最近發布了ActiveMQ和ServiceMix發行版的企業版。 其中一些重要功能包括增量修補 &#xff0c; 自定義平臺安裝程序和第三方驗證 。 新企業版附帶的最酷的功能之一是Fuse Fabric和一些新工具 &#xff0c;使您可以利用Fabric管理環境。 Fabric允許您通過一些命令行或…

Mybatis參數傳遞及返回類型

mybatis參數傳遞&#xff1a; 單個參數&#xff1a;不做特殊處理 #{參數名}&#xff1a;取出參數值 多個參數&#xff1a;做特殊處理 多個參數會被封裝成一個map key&#xff1a;param1 ... paramN value&#xff1a;傳入的參數…

網絡html代碼是什么問題,html代碼問題

html代碼問題來源:互聯網 2010-03-22 10:35:57 評論分類: 電腦/網絡 >> 程序設計 >> 其他編程語言問題描述:這三種鏈接格式我都試了&#xff0c;都不行&#xff0c;請高手指點下。。。。。注意&#xff1a;我要的是代碼&#xff0c;不是操作方法&#xff0c;因為…

spring mvc 文件上傳

spring mvc 文件上傳 一、單文件上傳 配置步驟&#xff1a; 步驟一、在配置文件中配置包掃描器&#xff08;暫且這樣配&#xff0c;會出問題&#xff0c;我們下面說解決方案&#xff09; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns…

使用工廠模式解決設計問題

工廠設計模式是面向對象環境中最常用的模式之一。 再次來自“創意設計”模式類別&#xff0c;即有關對象創建的所有信息。 在某些情況下&#xff0c;對象的創建很復雜&#xff0c;可能需要某種程度的抽象&#xff0c;以便客戶端代碼無法意識到這些復雜性和內部實現細節。 在某些…

103. Binary Tree Zigzag Level Order Traversal

二刷。 BFS&#xff0c;基本習慣上用Iterative的做法來做&#xff0c;就是QUEUE。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val x; }* }*/ public class Solution…

java多線程系列13 設計模式 Future 模式

Future 模式 類似于ajax請求 頁面異步的進行后臺請求 用戶無需等待請求的結果 就可以繼續瀏覽或者操作 核心就是&#xff1a;去除了主函數的等待時間&#xff0c;并使得原本需要等待的時間段可以用于處理其他業務邏輯 JDK內置實現Future模式演示一下 public class RealData im…

lodop轉到其他html頁面,Lodop實現打印功能

思路&#xff1a;1、在 html 頁面引入 LodopFuncs.js 文件&#xff0c;并用 object 標簽和 embed 標簽獲取 lodop 對象2、在 js 中獲取 html 頁面中的 object 和 embed 對象&#xff0c;并使用getLodop() 方法得到 lodop 對象3、實現打印功能&#xff0c;以下三步是必需的初始化…

完整的Web應用程序Tomcat JSF Primefaces JPA Hibernate –第3部分

Primefaces AutoComplete&#xff0c;JSF轉換器 這篇文章從第一部分和第二部分繼續。 JSF擁有Converter工具&#xff0c;可以幫助我們從用戶視圖中獲取一些數據并將其轉換為從數據庫或緩存中加載的對象。 在“ com.converter”包中&#xff0c;創建以下類&#xff1a; packa…

html5首屏加載樂山暴雨,發布前端項目時因chunk-vendors過大導致首屏加載太慢,Vue Build時chunk-vendors的優化方案...

這個優化是兩方面的&#xff0c;前端將文件打包成.gz文件&#xff0c;然后通過nginx的配置&#xff0c;讓瀏覽器直接解析.gz文件。1、compression-webpack-plugin插件打包.gz文件安裝插件npm install --save-dev compression-webpack-plugin或者yarn add compression-webpack-p…

width:100vh與min-height:calc(100vh + 51px)

vh:相對于視窗的高度&#xff0c;那么vw:則是相對于視窗的高度。 “視區”所指為瀏覽器內部的可視區域大小&#xff0c;即window.innerWidth/window.innerHeight大小&#xff0c;不包含任務欄標題欄以及底部工具欄的瀏覽器區域大小。 詳細vh的用法&#xff0c;大家可以參考http…

XML配置文件中的Spring配置文件

我的上一個博客非常簡單&#xff0c;因為它涵蓋了我從Spring 3.0.x到Spring 3.1.x的輕松升級&#xff0c;最后我提到可以將Spring模式升級到3.1&#xff0c;以利用Spring的最新功能。 在今天的博客中&#xff0c;我將介紹這些功能中最酷的功能之一&#xff1a;Spring配置文件。…

交大計算機專業怎樣,計算機專業高校實力排名,上海交大第五,清華第二,第一毫無爭議...

原標題&#xff1a;計算機專業高校實力排名&#xff0c;上海交大第五&#xff0c;清華第二&#xff0c;第一毫無爭議計算機專業在近幾年可謂是“大熱”&#xff0c;眾多考生搶破頭也想當碼農&#xff0c;背后的原因其實不難理解。互聯網時代的到來&#xff0c;計算機早已滲透到…

python_day7 綁定方法與非綁定方法

在類中定義函數如果 不加裝飾器 則默認 為對象作為綁定方法 如果增加 classmethod 是 以 類 作為綁定方法 增加 classmethod 是 非綁定方法&#xff0c;就是不將函數 綁定 ##################### class Foo: def func(self): print(self) classmethod def func…

Spring Security使用Hibernate實現自定義UserDetails

大多數時候&#xff0c;我們將需要在Web應用程序中配置自己的安全訪問角色。 這在Spring Security中很容易實現。 在本文中&#xff0c;我們將看到最簡單的方法。 首先&#xff0c;我們將在數據庫中需要以下表格&#xff1a; CREATE TABLE IF NOT EXISTS mydb.security_role (…

python之路-面向對象

編程范式 編程是 程序 員 用特定的語法數據結構算法組成的代碼來告訴計算機如何執行任務的過程 &#xff0c; 一個程序是程序員為了得到一個任務結果而編寫的一組指令的集合&#xff0c;正所謂條條大路通羅馬&#xff0c;實現一個任務的方式有很多種不同的方式&#xff0c; 對這…

西安郵電大學計算機科學與技術有專碩嗎,2020年西安郵電大學計算機學院考研擬錄取名單及排名!...

20考研復試調劑群&#xff1a;4197552812020年西安郵電大學計算機學院碩士研究生招生復試成績及綜合排名各位考生&#xff1a;現將我院2020年碩士研究生招生復試成績及綜合排名公布(最終錄取名單及新生學籍注冊均以“全國碩士研究生招生信息公開平臺”備案信息為準)&#xff0c…

用Java排序的五種有用方法

Java排序快速概述&#xff1a; 正常的列表&#xff1a; private static List VEGETABLES Arrays.asList("apple", "cocumbers", "blackberry");Collections.sort(VEGETABLES);output: apple, blackberry, cocumbers反向排序&#xff1a; pri…

[python]-數據科學庫Numpy學習

一、Numpy簡介&#xff1a; Python中用列表(list)保存一組值&#xff0c;可以用來當作數組使用&#xff0c;不過由于列表的元素可以是任何對象&#xff0c;因此列表中所保存的是對象的指針。這樣為了保存一個簡單的[1,2,3]&#xff0c;需要有3個指針和三個整數對象。對于數值運…