c# Mongodb

C# API文檔:http://api.mongodb.org/csharp/2.2/html/R_Project_CSharpDriverDocs.htmhtml

驅動文檔:https://docs.mongodb.org/ecosystem/drivers/csharp/mongodb

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using MongoDB.Bson;
using MongoDB.Driver;

namespace MES_MonitoringService.Common
{
    /// <summary>
    /// Mongodb操做類
    /// </summary>
    public class MongodbHandler
    {
        /*默認MongoDB參數*/
        /*-------------------------------------------------------------------------------------*/

        public static string MongodbServiceName = Common.ConfigFileHandler.GetAppConfig("MongodbServiceName");
        private static string MongodbDefaultUrl = Common.ConfigFileHandler.GetAppConfig("MongodbURL");
        private static string MongodbDefaultDBName = Common.ConfigFileHandler.GetAppConfig("MongodbName");

        // 定義一個靜態變量來保存類的實例
        private static MongodbHandler uniqueInstance;
        //定義一個標識確保線程同步 
        private static readonly object locker = new object();


        /*構造函數*/
        /*-------------------------------------------------------------------------------------*/

        /// <summary>
        /// mongo鏈接客戶端
        /// </summary>
        public static MongoClient mc_MongoClient = null;

        /// <summary>
        /// mongo數據庫
        /// </summary>
        public IMongoDatabase mc_MongoDatabase = null;


        /*構造函數*/
        /*-------------------------------------------------------------------------------------*/

        /// <summary>
        /// 定義私有構造函數,使外界不能建立該類實例
        /// </summary>
        private MongodbHandler()
        {
            if (!Common.CommonFunction.ServiceRunning(MongodbServiceName))
            {
                throw new Exception("Mongodb 服務未安裝或未運行,沒法鏈接至Mongodb");
            }

            //client
            mc_MongoClient = new MongoClient(MongodbDefaultUrl);
            //database
            mc_MongoDatabase = mc_MongoClient.GetDatabase(MongodbDefaultDBName);
        }

        /// <summary>
        /// 定義公有方法提供一個全局訪問點,同時你也能夠定義公有屬性來提供全局訪問點
        /// </summary>
        /// <returns></returns>
        public static MongodbHandler GetInstance()
        {
            // 當第一個線程運行到這裏時,此時會對locker對象 "加鎖",
            // 當第二個線程運行該方法時,首先檢測到locker對象爲"加鎖"狀態,該線程就會掛起等待第一個線程解鎖
            // lock語句運行完以後(即線程運行完以後)會對該對象"解鎖"
            // 雙重鎖定只須要一句判斷就能夠了
            if (uniqueInstance == null)
            {
                lock (locker)
                {
                    // 若是類的實例不存在則建立,不然直接返回
                    if (uniqueInstance == null)
                    {
                        uniqueInstance = new MongodbHandler();
                    }
                }
            }
            return uniqueInstance;
        }




        /// <summary>
        /// 獲取數據集
        /// </summary>
        /// <param name="collectionName"></param>
        /// <returns></returns>
        public IMongoCollection<BsonDocument> GetCollection(string collectionName)
        {
            return mc_MongoDatabase.GetCollection<BsonDocument>(collectionName);
        }


        /*操做數據*/
        /*-------------------------------------------------------------------------------------*/

        /// <summary>
        /// 數據集插入一條數據
        /// </summary>
        /// <param name="collection"></param>
        /// <param name="newDocument"></param>
        public void InsertOne(IMongoCollection<BsonDocument> collection, BsonDocument newDocument)
        {
            collection.InsertOne(newDocument);
        }

        /// <summary>
        /// 找到全部
        /// </summary>
        /// <param name="collection"></param>
        /// <returns></returns>
        public MongoDB.Driver.Linq.IMongoQueryable FindAll(IMongoCollection<BsonDocument> collection)
        {
            return collection.AsQueryable<BsonDocument>();
        }

        /// <summary>
        /// 找到一條
        /// </summary>
        /// <param name="collection"></param>
        /// <param name="filter"></param>
        /// <returns></returns>
        public IFindFluent<BsonDocument,BsonDocument> Find(IMongoCollection<BsonDocument> collection, FilterDefinition<BsonDocument> filter)
        {            
            return collection.Find(filter);
        }

        /// <summary>
        /// 找到並更新
        /// </summary>
        /// <param name="collection"></param>
        /// <param name="filter"></param>
        /// <param name="update"></param>
        /// <returns></returns>
        public BsonDocument FindOneAndUpdate(IMongoCollection<BsonDocument> collection, FilterDefinition<BsonDocument> filter,UpdateDefinition<BsonDocument> update)
        {
            return collection.FindOneAndUpdate(filter, update);
        }

        /// <summary>
        /// 找到並刪除
        /// </summary>
        /// <param name="collection"></param>
        /// <param name="filter"></param>
        /// <returns></returns>
        public BsonDocument FindOneAndDelete(IMongoCollection<BsonDocument> collection, FilterDefinition<BsonDocument> filter)
        {
            return collection.FindOneAndDelete(filter);
        }
    }
}
封裝類

 

 

查找數據數據庫

 

 

更新單個數據api

 

 

更新多個字段數組

在聲明修改條件時,先聲明一個數組,將其中須要設置的值寫入,在須要運行命令時使用Builders<BsonDocument>.Update.Combine()方法進行合併修改方法 ide

 

計算字段函數

 

 

參考地址:ui

http://www.javashuo.com/article/p-nktiwrxu-e.htmlspa

https://blog.csdn.net/shiyaru1314/article/details/53672609.net

http://www.javashuo.com/article/p-ugueqtmp-dq.html

相關文章
相關標籤/搜索