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

MongoDBクエリでエイリアス(別名)を作成する方法

MongoDBでは、アグリゲーションフレームワーク$projectステージを利用することで、フィールドにエイリアス(別名)を作成できます。本記事では、実際のコード例を交えながら、その手順をわかりやすく解説します。

サンプルコレクションの作成

まず、ドキュメントを含むコレクションを作成しましょう。以下のクエリを実行して、creatingAliasDemoコレクションにデータを追加します。

> db.creatingAliasDemo.insertOne({_id:101,"Name":"John Doe"});
{ "acknowledged" : true, "insertedId" : 101 }
> db.creatingAliasDemo.insertOne({_id:102,"Name":"David Miller"});
{ "acknowledged" : true, "insertedId" : 102 }
> db.creatingAliasDemo.insertOne({_id:103,"Name":"Sam Williams"});
{ "acknowledged" : true, "insertedId" : 103 }

登録したドキュメントの確認

find()メソッドを使って、コレクション内のすべてのドキュメントを表示してみましょう。

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

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

{ "_id" : 101, "Name" : "John Doe" }
{ "_id" : 102, "Name" : "David Miller" }
{ "_id" : 103, "Name" : "Sam Williams" }

$projectステージでエイリアスを作成する

次に、アグリゲーションパイプラインの$projectステージを使って、NameフィールドのエイリアスとしてFullNameを作成するクエリを見てみましょう。

> db.creatingAliasDemo.aggregate(
... [
... {
... $project: {
... _id:1,
... "FullName":"$Name"
... }
... }
... ]
... );

このクエリでは、"FullName":"$Name"という記述により、既存のNameフィールドの値をFullNameという新しいフィールド名(エイリアス)で出力しています。実行すると、次のような結果が得られます。

{ "_id" : 101, "FullName" : "John Doe" }
{ "_id" : 102, "FullName" : "David Miller" }
{ "_id" : 103, "FullName" : "Sam Williams" }

まとめ

このように、$projectステージを活用すれば、元のコレクションのフィールド名を変更することなく、クエリの結果だけを別の名前で出力できます。APIレスポンスの整形や、既存アプリケーションとの互換性を保ちながらフィールド名を変えたい場合などに非常に便利なテクニックなので、ぜひ活用してみてください。

  1. MongoDBで埋め込みドキュメント(配列内のサブドキュメント)をクエリする方法

    MongoDBの埋め込みドキュメントをクエリするには?MongoDBでは、ドキュメントの中に配列として埋め込まれたサブドキュメントをクエリする場合、aggregate()メソッドを使用するのが効果的です。この記事では、$unwindと$matchを組み合わせて、埋め込みドキュメントから条件に合うデータを抽出する手順を解説します。1. サンプルコレクションの作成まずは、学生情報を配列として持つドキュメントを含むコレクションを作成しましょう。insertOne()メソッドを使ってドキュメントを挿入します。> db.demo705.insertOne( ... { ...

  2. MongoDBで階層構造のJSONドキュメントを作成する方法

    MongoDBはドキュメント指向データベースであり、JSONに似たBSON形式でデータを保存します。フィールドの中にオブジェクト(サブドキュメント)や配列をネストすることで、階層構造を持つJSONのようなドキュメントを簡単に作成できます。以下の構文を使用して、MongoDBで階層構造のJSONドキュメントを作成します。db.demo716.insertOne(    {       yourFieldName1,       yourFieldName2,       .