C#操做MongoDB的簡單實例

  最近比較忙,好久沒更新了(雖然沒人看,也沒人在意,也要記得be yourself),node

  前面分享了一些mongodb的安裝和簡單的語法,今天模仿支付寶首頁的模塊移動功能,用mongo作一個簡單的後臺實例。mongodb

  one,啓動本地的mongo服務like this.json

  two,鏈接mongo可視化界面,創建PersonModule的文檔集合。數組

  three,配置默認模塊,我這邊了個公共xml裏。this

<?xml version="1.0" encoding="utf-8" ?>

<root>
  <model name="HomePage">
    <nodes name="DefaulModule">
      <node id="1" name="轉帳"/>
      <node id="2" name="共享單車"/>
      <node id="3" name="電影票"/>
      <node id="4" name="出行"/>
    </nodes>
  </model >
</root>

  four,正式開工。spa

    1.初始化首頁模塊。code

    /// <summary>
        /// 初始化模塊 /// </summary>
        public void InitModule() { var DefaultModule = XmlHelper.GetXmlDic("HomePage", "DefaulModule"); var personModule = new PersonalModule(); List<BsonDocument> docs = new List<BsonDocument>(); //添加id=1,2,3三我的的首頁模塊
            for (var i = 1; i < 4; i++) { personModule.PersonId = i; personModule.Module = DefaultModule; //一我的一我的添加
                var json = JsonHelper.SerializeObject(personModule); //mongoServer.Insert(collationName, json); //批量添加
                BsonDocument document = BsonDocument.Parse(json); docs.Add(document); } //導入mongodb
            mongoServer.ImportBatch("PersonModule", docs); }

    2.我的PersonId=1的,添加模塊(Id=5,Name=「餘額」)orm

    /// <summary>
        /// 添加模塊 /// </summary>
        public void AddModule() { var arrName = "Module"; var model = new Module() { Id = 5, Name = "餘額" }; var json = JsonHelper.SerializeObject(model); var filter = new BsonDocument(); // 更新條件
            filter.Add("PersonId", 1); //集合名稱,查詢條件,添加的對象,須要添加的數組名稱
 mongoServer.UpdatePushArray(collationName, filter, json, arrName); }

    3.移除模塊,移除我的PersonId=2,id=4的模塊。server

    /// <summary>
        /// 移除模塊 /// </summary>
        public void RemoveModule() { var arrName = "Module"; var filter = new BsonDocument(); // 更新條件
            filter.Add("PersonId", 2); //移除PersonId=2的數組名稱爲"Module",id=4的對象
            var doc = new BsonDocument() { new BsonElement(arrName, new BsonDocument() { new BsonElement("Id", 4) })}; mongoServer.UpdatePullArray(collationName, filter, doc); }

    4.移動或者移動並刪除模塊xml

    /// <summary>
        /// 移動或者移動並移除模塊 /// </summary>
        public void MoveModule() { var arrName = "Module"; // 更新條件
            var filter = new BsonDocument(); filter.Add("PersonId", 3); var moduleList = new List<Module>(); moduleList.Add(new Module { Id = 2,Name= "共享單車" }); moduleList.Add(new Module { Id = 1, Name = "轉帳" }); moduleList.Add(new Module { Id = 4, Name = "出行" }); var json = JsonHelper.SerializeObject(moduleList); mongoServer.UpdateArray(collationName, filter, json, arrName); }

 

mongoServer類。

public class MongoServer { private IMongoDatabase database = null; private string server = System.Configuration.ConfigurationManager.AppSettings["MongoServer"]; private string port = System.Configuration.ConfigurationManager.AppSettings["MongoPort"]; private string db = System.Configuration.ConfigurationManager.AppSettings["DBName"]; public MongoServer() { Init(); } public void Init() { var client = new MongoClient($"mongodb://{server}:{port}"); database = client.GetDatabase(db); }      /// <summary>
        /// 查詢一條 /// </summary>
        /// <param name="tablename"></param>
        /// <param name="query"></param>
        /// <returns></returns>
        public string FindOne(string tablename, BsonDocument filter) { var collection = database.GetCollection<BsonDocument>(tablename); var documents = collection.Find(filter).FirstOrDefault(); return documents == null ? "" : documents.ToJson(); } /// <summary>
        /// update /// </summary>
        /// <param name="collectionName"></param>
        /// <param name="filter"></param>
        /// <param name="update"></param>
        public void Update(string collectionName, BsonDocument filter, BsonDocument update) { var collection = database.GetCollection<BsonDocument>(collectionName); collection.FindOneAndUpdate(filter, update); } /// <summary>
        /// insert /// </summary>
        /// <param name="collectionName"></param>
        /// <param name="json"></param>
        public void Insert(string collectionName, string json) { var collection = database.GetCollection<BsonDocument>(collectionName); BsonDocument document = BsonDocument.Parse(json); collection.InsertOne(document); } /// <summary>
        /// delete /// </summary>
        /// <param name="collectionName"></param>
        /// <param name="json"></param>
        public void Delete(string collectionName, BsonDocument query) { var collection = database.GetCollection<BsonDocument>(collectionName); collection.FindOneAndDelete(query); }     /// <summary>
        /// 批量導入 /// </summary>
        /// <param name="collectionName"></param>
        /// <param name="docs"></param>
        public void ImportBatch(string collectionName, List<BsonDocument> docs) { var collection = database.GetCollection<BsonDocument>(collectionName); collection.InsertMany(docs); } /// <summary>
        /// 添加一條數組 /// </summary>
        /// <param name="collectionName">集合名</param>
        /// <param name="filter">條件</param>
        /// <param name="json">更新內容</param>
        /// <param name="arrayName">數組名</param>
        public void UpdatePushArray(string collectionName, BsonDocument filter, string json, string arrayName) { //更新mongo簡歷
            var update = new BsonDocument(); BsonDocument document = BsonDocument.Parse(json); //添加doucment數組對象
            update.Add("$push", new BsonDocument() { new BsonElement(arrayName, document) }); //更新修改時間 //update.Add("$set", new BsonDocument() { // new BsonElement("",""), // });
 Update(collectionName, filter, update); } /// <summary>
        /// 刪除一條數組 /// </summary>
        /// <param name="collectionName"></param>
        /// <param name="filter"></param>
        /// <param name="arrDoc"></param>
        public void UpdatePullArray(string collectionName, BsonDocument filter, BsonDocument arrDoc) { //更新mongo簡歷
            var update = new BsonDocument(); //$pull刪除對象數組idName=id的對象文檔
            update.Add("$pull", arrDoc); Update(collectionName, filter, update); } /// <summary>
        /// 更新數組 /// </summary>
        /// <param name="tableName"></param>
        /// <param name="json"></param>
        /// <param name="arrayName"></param>
        public void UpdateArray(string collectionName, BsonDocument filter, string json, string arrayName) { //更新mongo簡歷
            var update = new BsonDocument(); var update1 = new BsonDocument(); //刪除原有數組文檔
            update.Set("$unset", new BsonDocument() { new BsonElement(arrayName, "") }); Update(collectionName, filter, update); //set新的數組
            json = "{ \"" + arrayName + "\" :" + json + "}"; BsonDocument document = BsonDocument.Parse(json); update1.Set("$set", document); Update(collectionName, filter, update1); } }

  最後,注意給document賦值時候的大小寫問題。還有須要引用System.Runtime.InteropServices.RuntimeInformation包。

相關文章
相關標籤/搜索