都内で働くSEの技術的なひとりごと / Technical soliloquy of System Engineer working in Tokyo

都内でサラリーマンやってます。SQL Server を中心とした (2023年からは Azure も。) マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。英語の勉強のため、英語の

MongoDBの検証続き

前回書いた記事から、BSONについて少し気になっていたので、引き続き調査を続行。MongoDBは基本的にJSON形式でのデータの更新を行うらしいです。(まだ勉強中なのでよく分かっていません。)サンプルコードを少し書いてみました。

    //前回のソースそのまま。            
    var monc = new MongoClient();
    //前回のソースそのまま。
    var mons = monc.GetServer();
    //データベースの取得
    var db = mons.GetDatabase("Chart");

    //Chartのドキュメントタイプを取得する。
    var chart = db.GetCollection<BsonDocument>("Chart");
    //BsonDocumentクラスを使用して、JSON形式で格納するデータ作成する。
    var chartdocument = new BsonDocument {
                { "PatientID", "1" },
                { "DocumentNo", "D0001" },
                { "DocumentContents", "頭が痛い。"}};
    //データをInsertする。
    chart.Insert(chartdocument);

 

NOSQLってすごいですね。RDBMSばかりやっている開発者からするとかなりカルチャーショックです。格納する形式も動的に決定できるんですね。プライマリキー的なものは、_idというkeyを必ずもつようですね。

f:id:koogucc11:20130324182350p:plain

 

次は取得する場合です。とりあえず、登録したデータをすべて取得してみます。取得するには、登録したJSON形式に対応したクラスが必要です。今回は下記のクラスを用意してみました。

    public class Chart
    {
        public ObjectId _id { get; set; }
        public string PatientID { get; set; }
        public string DocumentNo { get; set; }
        public string DocumentContents { get; set; }

    }

 

データを取得するロジックは下記の通りです。

    //前回のソースそのまま。            
    var monc = new MongoClient();
    //前回のソースそのまま。
    var mons = monc.GetServer();
    //データベースの取得
    var db = mons.GetDatabase("Chart");

    //Chartのドキュメントタイプを取得する。
    var chartdocuments = db.GetCollection<Chart>("Chart");

    //foreachなどで全件取得する。

 foreach (Chart studentObj in chartdocuments.FindAll())
    {

    }

f:id:koogucc11:20130324183815p:plain

上図の通り、データが取得できていますね。仕様変更などが多いシステムでは、かなり有用なのではないでしょうか?また時間がとれたら、細かい検証をして行きたいとおもいます。(それまで興味があったら....)

ああ、仕事しないといけないのに、また現実逃避でブログ書いてしまった....夕ごはん食べたらちゃんと仕事をしないと....