【MongoDB】フィールド(列)全体に文字列を追加する方法 ― $concat演算子の使い方
MongoDBで特定のフィールド(列)全体に文字列を先頭に追加したい場合、アグリゲーションフレームワークの $concat 演算子を使うのが便利です。この記事では、サンプルコレクションの作成から、すべてのドキュメントのフィールド値の先頭に「Mr.」という文字列を付加する手順まで、具体的なコード例とともに解説します。
1. サンプルコレクションの作成
まずは、テスト用のコレクションにドキュメントを挿入します。insertOne() メソッドを以下のように使用します。
> db.prependDemo.insertOne({"StudentFirstName":"John"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ccf3bcedceb9a92e6aa1955")
}
> db.prependDemo.insertOne({"StudentFirstName":"Chris"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ccf3bd3dceb9a92e6aa1956")
}
> db.prependDemo.insertOne({"StudentFirstName":"Robert"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ccf3bd8dceb9a92e6aa1957")
}
2. 登録されたドキュメントの確認
find() メソッドを使えば、コレクション内のすべてのドキュメントを表示できます。
> db.prependDemo.find().pretty();
実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5ccf3bcedceb9a92e6aa1955"), "StudentFirstName" : "John" }
{
"_id" : ObjectId("5ccf3bd3dceb9a92e6aa1956"),
"StudentFirstName" : "Chris"
}
{
"_id" : ObjectId("5ccf3bd8dceb9a92e6aa1957"),
"StudentFirstName" : "Robert"
}
3. $concat を使って文字列を先頭に追加する
ここからが本題です。アグリゲーションパイプラインの $project ステージと $concat 演算子を組み合わせることで、フィールド全体の値に任意の文字列を連結できます。
> db.prependDemo.aggregate([{
... $project: {
... "StudentFirstName": {
... $concat: ["Mr.", "$StudentFirstName"]
... }
... }
... }]);
実行結果は以下の通りです。すべてのドキュメントの StudentFirstName フィールドの先頭に「Mr.」が追加されていることが確認できます。
{ "_id" : ObjectId("5ccf3bcedceb9a92e6aa1955"), "StudentFirstName" : "Mr.John" }
{ "_id" : ObjectId("5ccf3bd3dceb9a92e6aa1956"), "StudentFirstName" : "Mr.Chris" }
{ "_id" : ObjectId("5ccf3bd8dceb9a92e6aa1957"), "StudentFirstName" : "Mr.Robert" }
補足:変更内容をデータベースに反映するには
なお、上記の aggregate() は変換後の値をクエリ結果として返すだけで、元のドキュメント自体は書き換えられません。データベース上の値そのものを更新したい場合は、MongoDB 4.2以降で利用できる、アグリゲーションパイプラインを使った updateMany() を組み合わせましょう。
> db.prependDemo.updateMany(
... {},
... [ { $set: { "StudentFirstName": { $concat: [ "Mr.", "$StudentFirstName" ] } } } ]
... );
このように $concat 演算子を活用することで、MongoDBのフィールド全体に対して柔軟かつ効率的に文字列操作を行うことができます。
-
MongoDBで文字列を数値に変換する方法を徹底解説
MongoDBでは、文字列として保存された数値データを実際の数値型に変換するには、シェル上でスクリプトを実行する必要があります。本記事では、サンプルコレクションを作成し、forEach()とparseInt()を組み合わせて文字列を整数へ変換する手順を、実行結果付きでわかりやすく解説します。 1. サンプルコレクションの作成 まず、文字列型の「EmployeeId」を持つドキュメントを格納したコレクションを作成します。insertOne()メソッドを使って、3件のドキュメントを挿入しましょう。 > db.convertStringToNumberDemo.insertOne({Emplo
-
MongoDBでコンソールをクリアする2つの方法|ショートカット「Ctrl + L」とコマンド「cls」の使い方
MongoDBのシェル(mongo / mongosh)を使っていると、実行したクエリや結果がどんどん積み重なり、画面が見づらくなることがあります。そんなときに便利なのがコンソールのクリア機能です。MongoDBでは、以下の2つの方法でコンソールをクリアできます。 方法1:キーボードショートカット「Ctrl + L」を使う 最も手軽なのが、キーボードショートカットを使う方法です。次のキーを押すだけで、即座にコンソールをクリアできます。 Ctrl + L このキーを押すと、それまで表示されていたログや実行結果がすべて消え、まっさらな状態になります。Linuxのターミナルなどと同じ操作感なので、