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

MongoDBでfind()を使って返却データを制限し、特定のフィールドのみ表示する方法

MongoDBでクエリ結果として返されるデータを制限したい場合は、find()メソッドにプロジェクション(射影)を指定します。各フィールドに対して「1」または「0」を設定することで、そのフィールドを表示するか非表示にするかを制御できます。

この記事では、実際にコレクションを作成しながら、特定のフィールドだけを取得する方法を解説します。

コレクションの作成とドキュメントの挿入

まず、insertOne()メソッドを使ってサンプル用のコレクションを作成します。

> db.demo330.insertOne({"Id":101,"Name":"Chris","Age":21});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e52149ff8647eb59e562081")
}
> db.demo330.insertOne({"Id":102,"Name":"Sam","Age":24});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e5214aaf8647eb59e562082")
}
> db.demo330.insertOne({"Id":103,"Name":"David","Age":28});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e5214b3f8647eb59e562083")
}
> db.demo330.insertOne({"Id":104,"Name":"Bob","Age":23});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e5214bdf8647eb59e562084")
}

すべてのドキュメントを表示する

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

> db.demo330.find();

実行すると、次のような出力が得られます。

{ "_id" : ObjectId("5e52149ff8647eb59e562081"), "Id" : 101, "Name" : "Chris", "Age" : 21 }
{ "_id" : ObjectId("5e5214aaf8647eb59e562082"), "Id" : 102, "Name" : "Sam", "Age" : 24 }
{ "_id" : ObjectId("5e5214b3f8647eb59e562083"), "Id" : 103, "Name" : "David", "Age" : 28 }
{ "_id" : ObjectId("5e5214bdf8647eb59e562084"), "Id" : 104, "Name" : "Bob", "Age" : 23 }

プロジェクションで特定のフィールドのみ表示する

返却されるデータを制限するには、find()の第2引数にプロジェクションを指定します。以下の例では「Name」フィールドに「1」を設定しているため、「Name」だけが表示されます。

> db.demo330.find({},{Name:1});

実行結果は以下の通りです。

{ "_id" : ObjectId("5e52149ff8647eb59e562081"), "Name" : "Chris" }
{ "_id" : ObjectId("5e5214aaf8647eb59e562082"), "Name" : "Sam" }
{ "_id" : ObjectId("5e5214b3f8647eb59e562083"), "Name" : "David" }
{ "_id" : ObjectId("5e5214bdf8647eb59e562084"), "Name" : "Bob" }

ポイント:_idフィールドについて

上記の出力を見ると、指定していないはずの「_id」フィールドも表示されています。これは、_idフィールドはデフォルトで常に含まれるためです。もし_idを結果から除外したい場合は、明示的に「_id: 0」を指定してください。

> db.demo330.find({},{_id:0, Name:1});

このように、プロジェクションを活用することで、必要なデータだけを効率的に取得でき、ネットワーク帯域の節約やアプリケーションのパフォーマンス向上にもつながります。

  1. 【MongoDB】ネストされたドキュメントのキー名のみを抽出して表示する方法

    MongoDBでは、配列内にネストされたドキュメント(サブドキュメント)のキー名だけを一覧として取得したいケースがあります。本記事では、insertOne()でサンプルデータを作成し、find()で内容を確認した後、集計パイプラインの$reduce、$objectToArray、$map、$concatArraysを組み合わせて、ネストされたドキュメントのキー名のみを抽出する方法を実行例付きで解説します。 1. サンプルコレクションの作成 まず、insertOne()メソッドを使って、detailsフィールドに複数のドキュメントを持つ配列を含むコレクションを作成します。 > db.dem

  2. MongoDBドキュメントから特定の値をフィルタリングする方法

    MongoDBドキュメントから特定の値をフィルタリングする方法MongoDBでドキュメント内の配列から特定の値を抽出したい場合は、集計パイプラインで $filter を使用します。この記事では、実際にコレクションを作成し、特定の条件に一致する要素だけをフィルタリングする手順を、サンプルコードとともに解説します。1. サンプルコレクションの作成まず、insertOne() メソッドを使って、配列フィールドを含むドキュメントを持つコレクションを作成します。 db.demo751.insertOne( ... { ... _id: 101, ... details: [