前回は, 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の中身をいじることができるようになります. 前回のポストと総括すれば, 簡単な操作ならほぼできるようになったかと思われます.

CATEGORIES