ごった煮

色々な事を書いてます

C#とMongoDBを連携してみる2

前回は, MongoDBにC#からデータを挿入, 検索の仕方を説明しました. しかし, DBを扱う上で必要な基本機能としては, データの更新や削除が必要になってくるかと思います. そこで, 今回は, MongoDBのデータをC#から変更, 削除する方法を説明します.

更新

MongoDBのデータを更新する方法は, 主に2種類です. 一つ目は, 直接クエリで内容を変更する方法, 二つ目は, 検索して取得したデータを変更して, もう一度保存する方法です.

実際にやってみる

直接更新を行いたい場合, MongoCollectionのFindAndModify()を使用します. 検索して取得したデータを行使し, 保存する方法を詳しく説明していきます.

具体的なソースコードを以下に示します.

[csharp] //ローカルのMongoに接続 var server = new MongoClient().GetServer(); //データベースを選択 var db = server.GetDatabase("qaramell"); //コレクション取得 var collections = db.GetCollection<Value>("value"); //引数のスプリット List<string> valueList = new List<string>(value.Replace("rn", "n").Split('n')); //ObjectIDを生成 ObjectId id = new ObjectId(valueList[0]); Value val = collections.AsQueryable<Value>().Where(p => p._id == id).First(); val.text = valueList[1]; collections.Save(val); [/csharp]

このコードでは, 渡されたデータ(ID)に対応するデータを検索して取得し, 渡されたもう一つの値をValueクラスのtextに挿入して保存する一連の流れを行っています.これで, 簡単にデータの挿入が行えました.

削除

削除は, MongoCollectionのFindAndRemoveを使用すれば簡単に行えます.

まずは, ソースコードを見てみましょう.

[csharp] //ローカルのMongoに接続 var server = new MongoClient().GetServer(); //データベースを選択 var db = server.GetDatabase("qaramell"); //コレクション取得 var collections = db.GetCollection<Value>("value"); //ObjectId生成 ObjectId _id = new ObjectId(id); collections.FindAndRemove(Query.EQ("_id", _id), SortBy.Null); [/csharp]

このソースコードでは, "_id"が_idと一致するものを取り出すクエリをFindAndRemoveに渡して, クエリ条件に一致したものを削除する動作をします. SortBy.Nullは, Sort条件を示していますが, FindAndRemoveには, ソート条件が必須ですので, 適当にソート条件を指定してください.

こんな感じのコードを書くと, C#でMongoDBの中身をいじることができるようになります. 前回のポストと総括すれば, 簡単な操作ならほぼできるようになったかと思われます.