• C#操作MongoDB的简单实例


      最近比较忙,很久没更新了(虽然没人看,也没人在乎,也要记得be yourself),

      前面分享了一些mongodb的安装和简单的语法,今天模仿支付宝首页的模块移动功能,用mongo做一个简单的后台实例。

      one,启动本地的mongo服务like this.

      two,连接mongo可视化界面,建立PersonModule的文档集合。

      three,配置默认模块,我这边了个公共xml里。

    <?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,正式开工。

        1.初始化首页模块。

         /// <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=“余额”)

         /// <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的模块。

         /// <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.移动或者移动并删除模块

         /// <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包。

  • 相关阅读:
    iOS编程中比较两个日期的大小
    sqlite第三方类库:FMDB使用
    ios日期格式转换
    UISwipeGestureRecognizer 左右事件捕捉
    iOS7.0中UILabel高度调整注意事项
    【java基础】Java反射机制
    【struts2】ActionContext与ServletActionContext
    【struts2】OGNL
    【struts2】值栈(后篇)
    【struts2】值栈(前篇)
  • 原文地址:https://www.cnblogs.com/baiyujing/p/8228369.html
Copyright © 2020-2023  润新知