mongodbを使用して、変更を追加

7579 ワード

最近のプロジェクトでは、データベースがmongodbを使用している以上.前は接触していませんでしたね.どうすればいいですか.じゃ、もう一度勉強しましょう.とても面白いです
ちょっと紹介します.Mongodbは、分散ファイルに基づいて格納されるデータベースです.C++言語の記述があります.Webアプリケーションが拡張性の高い高性能のデータストレージソリューションを提供することを目的としています.
MongoDBは高性能、オープンソース、モードレスのドキュメント型データベースで、現在のNoSqlデータベースで人気のあるデータベースです.
MongoDBはリレーショナル・データベースと非リレーショナル・データベースの間に介在する製品で、非リレーショナル・データベースの中で最も機能が豊富で、最もリレーショナル・データベースに似ています.彼がサポートするデータ構造は非常に緩やかで、jsonのようなbjsonフォーマットであるため、比較的複雑なデータ型を格納することができる.Mongoの最大の特徴は、彼がサポートしているクエリー言語が非常に強く、その構文はオブジェクト向けのクエリー言語に似ており、類似関係データベースの単一テーブルクエリーのほとんどの機能を実現することができ、データのインデックス化もサポートしていることです.
従来のリレーショナル・データベースは、データベース(database)、テーブル(table)、レコード(record)の3つの階層概念から構成されており、MongoDBはデータベース(database)、コレクション(collection)、ドキュメント・オブジェクトから構成されています.(document)3つの階層で構成されています.MongoDBはリレーショナル・データベースのテーブルですが、集合には列、行、リレーショナル・コンセプトがありません.これはモードの自由の特徴を体現しています.
いい加減にしないで、直接テーマに入ります.
mongodbデータのインストール手順を紹介します
1.
mongodbをwindowサービスにインストールする
mongod–dbpath D:/MongoDB/dataコマンドラインを実行するたびにMongoDBを起動するのは不便で、Windowsサービスとして便利になります.コマンドは次のとおりです.
D:\MongoDB\bin>mongod --logpath D:\MongoDB\logs\MongoDB.log --logappend --dbpath D:\MongoDB\data --directoryperdb --serviceName MongoDB --install
注意:1:logは必ずxxxを指定します.logファイル(ファイルが存在しなくてもこのように書くと、自動的に作成され、このように書くことはできません–logpath d:mongodblogs);2:logsフォルダとdataフォルダはまず新しいほうがいいです.ServiceNameのN文字は大文字にします.
このコマンドラインはログファイルを指定します:D:MongoDBlogsMongoDB.log、ログは追加で出力されます.
データファイルディレクトリ:D:MongoDBdata、パラメータ-directoryperdbは、各DBに新しいディレクトリが作成されることを示します.
Windowsサービスの名称:MongoDB;
以上の3つのパラメータはすべて自分の状況によって決めることができます.
最後にインストールパラメータ:–install、それに対して–remove
MongoDBの起動:net start MongoDB停止MongoDB:net stop MongoDB
 
(一)データ可のリンク.
Webでconfigリンク
     
<connectionStrings>
    <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-iDream.Web-20131021202431;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-iDream.Web-20131021202431.mdf" />
  </connectionStrings>

 
(二)C#で公式のドライバを使用してmongodbデータベースを操作する
(1)nugetでofficial mongodb C#driverを見つけてダウンロード、インストール
完了してから参照するとmongodbが表示されます.Driver.dll(ドライバ)とmongodb.Bson(シーケンス化,Json関連)の2 dll
ドライバのインストールが完了しました.次にデータベースへのリンクを行います.
(2)リンクデータベース,コードは以下の通りである.
    
        MongoServer _server;
        MongoDatabase _database;
        MongoCollection<BaseDetails> _contacts;


        public BaseDetailsRepository()
            : this("")
        {
        }
        public BaseDetailsRepository(string connection)
        {
            if (string.IsNullOrWhiteSpace(connection))
            {
                connection = "mongodb://localhost:27017";
            }

            _server = MongoServer.Create(connection);
            _database = _server.GetDatabase("iD_BaseDetails", SafeMode.True);//      
            _contacts = _database.GetCollection<BaseDetails>("iD_BaseDetails");//      
        }

ついでに模型を貼っておきましょう
  
using MongoDB.Bson.Serialization.Attributes;

  [BsonId]
        public string DId { set; get; }
        public string BId { set; get; }
        public string Que01 { set; get; }
        public string Que02 { set; get; }
        public string Que03 { set; get; }

これでリンクデータベースも完了し、次に添削を行います
(三)データの追加
   
  public BaseDetails AddBaseDetail(BaseDetails item)
        {
            item.DId = ObjectId.GenerateNewId().ToString();
            //item.PubDt = DateTime.UtcNow;
            _contacts.Insert(item);
            return item;
        }

AddBaseDetailメソッドの呼び出し
   
 [HttpPost]
        public ActionResult Detail(BaseDetails item, string Id)
        {
            BaseDetailsRepository bd = new BaseDetailsRepository();
            bd.AddBaseDetail(item);          
           return RedirectToAction("Success");
      }

(四)データの修正
  
まず修正するレコードのIDを探し出して、iDによってこのレコードを探し出して、更にこのレコードの中のあるフィールドを修正します
(1)iDによりこの記録を探し出す
public BaseReg GetData(string id)
        {
            IMongoQuery imq = Query.EQ("_id", id);
            return _contacts.Find(imq).FirstOrDefault();
        }

この記録を修正する
 [HttpPost]
         public ActionResult TJBeiZhu(string Id,BaseReg brg)
         {
             try
             {
                 BaseReg br = new BaseReg();
                 BaseRepostory brt=new BaseRepostory();   
                 BaseReg model = brt.GetData(Id);//      
                 br.Id = model.Id;
                 br.BId = model.BId;
                 br.RName = model.RName;
                 br.Nickname = model.Nickname;
                 br.Local = model.Local;
                 br.Phone = model.Local;
                 br.Weixin = model.Weixin;
                 br.WeiBo = model.WeiBo;
                 br.Qq = model.Qq;
                 br.Email = model.Email;
                 br.Project = model.Project;
                 br.PubDt = model.PubDt;
                 br.Beizhu =brg.Beizhu;
                 brt.AddBeiZhu(br);//  
                 return RedirectToAction("index", "Admin");
             }
             catch (Exception ex)
             {
                 
                 throw ex;
             }
         }

この記録を更新する
 public BaseReg AddBeiZhu(BaseReg model)
        {
            //  “Id”   model.Id     
           // var query = new QueryDocument { { "Id", model.Id } };
            IMongoQuery query = Query.EQ("_id", model.Id);
            //                 
            var update = new UpdateDocument { { "$set", new QueryDocument { { "Beizhu", model.Beizhu } } } };         
            //      
            _contacts.Update(query, update);
            return model;
        }

(五)削除
(1)このデータのIDを見つけて削除している
public BaseReg GetData(string id)
        {
            IMongoQuery imq = Query.EQ("_id", id);
            return _contacts.Find(imq).FirstOrDefault();
        }

(2)削除
  
 [HttpPost]
         public ActionResult DelBase(string Id)
         {
             try
             {
                 BaseRepostory brt = new BaseRepostory();
                 BaseReg model = brt.GetData(Id);
                 brt.DelData(model);
                 return RedirectToAction("index", "Admin");
             }
             catch (Exception ex)
             {

                 throw ex;
             }
         }

 
public BaseReg DelData(BaseReg model)
        {
            IMongoQuery imq = Query.EQ("_id", model.Id);
            _contacts.Remove(imq);
            return model;
        }

OKです.