MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBで結果を連結する方法!forEach()の使い方を実例つきで解説

MongoDBで結果を連結する方法

MongoDBでは、forEach()メソッドを活用することで、取得したドキュメントの複数フィールドを連結して表示できます。この記事では、サンプルコレクションの作成から、「名前」と「年齢」を連結した新しいフィールドを作るまでの一連の手順を、実際のコード付きでわかりやすく解説します。

手順1:サンプルコレクションを作成する

まずは、ドキュメントを格納するためのコレクションを作成しましょう。insertOne()メソッドを使って、以下のように2件のドキュメントを挿入します。

> db.concatenateDemo.insertOne({"Name":"John","Age":21});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cc80dd88f9e6ff3eb0ce448")
}
> db.concatenateDemo.insertOne({"Name":"Carol","Age":23});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cc80de18f9e6ff3eb0ce449")
}

手順2:コレクション内の全ドキュメントを確認する

find()メソッドにpretty()を組み合わせると、コレクション内のすべてのドキュメントを整形された見やすい形式で表示できます。

> db.concatenateDemo.find().pretty();

上記のクエリを実行すると、以下のような出力が得られます。

{
   "_id" : ObjectId("5cc80dd88f9e6ff3eb0ce448"),
   "Name" : "John",
   "Age" : 21
}
{
   "_id" : ObjectId("5cc80de18f9e6ff3eb0ce449"),
   "Name" : "Carol",
   "Age" : 23
}

手順3:forEach()で結果を連結する

ここからが本題です。forEach()メソッドにコールバック関数を渡すことで、各ドキュメントに対して個別の処理を実行できます。下記の例では、NameAgeを連結した新しいフィールド「NameAndAge」を動的に生成し、結果を出力しています。

> db.concatenateDemo.find().forEach( function (result) {result.NameAndAge = result.Name + ' ' + result.Age; printjson(result); } );

実行すると、以下のように連結後のフィールドが追加されたドキュメントが表示されます。

{
   "_id" : ObjectId("5cc80dd88f9e6ff3eb0ce448"),
   "Name" : "John",
   "Age" : 21,
   "NameAndAge" : "John 21"
}
{
   "_id" : ObjectId("5cc80de18f9e6ff3eb0ce449"),
   "Name" : "Carol",
   "Age" : 23,
   "NameAndAge" : "Carol 23"
}

補足:集計パイプラインの$concatでも連結できる

なお、シェル側でのforEach()以外にも、MongoDB 3.4以降であれば集計パイプライン(aggregation pipeline)の$concat演算子と$addFieldsステージを組み合わせることで、同様の連結処理を実現できます。

> db.concatenateDemo.aggregate([
   { $addFields: {
      NameAndAge: { $concat: ["$Name", " ", { $toString: "$Age" }] }
   }}
]);

用途に応じて使い分けることで、より柔軟なデータ操作が可能になります。数値フィールドを連結する場合は$toStringでの文字列変換が必要になる点に注意してください。

  1. MongoDBでコレクションを削除(ドロップ)する方法をわかりやすく解説

    MongoDBでコレクションを削除(ドロップ)するには、drop()メソッドを使用します。基本的な構文は以下のとおりです。db.yourCollectionName.drop();この構文を実行すると、コレクションの削除が成功した場合は true、失敗した場合(コレクションが存在しないときなど)は false が返されます。事前準備:データベースとコレクションの一覧を確認するまず、MongoDB内にどのようなコレクションがあるのかを確認してみましょう。ここでは、複数のコレクションを含む「sample」というデータベースを例に説明します。最初に、以下のコマンドで「sample」データベースへ切り

  2. MongoDBでコンソールをクリアする2つの方法|ショートカット「Ctrl + L」とコマンド「cls」の使い方

    MongoDBのシェル(mongo / mongosh)を使っていると、実行したクエリや結果がどんどん積み重なり、画面が見づらくなることがあります。そんなときに便利なのがコンソールのクリア機能です。MongoDBでは、以下の2つの方法でコンソールをクリアできます。 方法1:キーボードショートカット「Ctrl + L」を使う 最も手軽なのが、キーボードショートカットを使う方法です。次のキーを押すだけで、即座にコンソールをクリアできます。 Ctrl + L このキーを押すと、それまで表示されていたログや実行結果がすべて消え、まっさらな状態になります。Linuxのターミナルなどと同じ操作感なので、