前回書いた記事から、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を必ずもつようですね。
次は取得する場合です。とりあえず、登録したデータをすべて取得してみます。取得するには、登録した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())
{
}
上図の通り、データが取得できていますね。仕様変更などが多いシステムでは、かなり有用なのではないでしょうか?また時間がとれたら、細かい検証をして行きたいとおもいます。(それまで興味があったら....)
ああ、仕事しないといけないのに、また現実逃避でブログ書いてしまった....夕ごはん食べたらちゃんと仕事をしないと....