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

MongoDBで1つのフィールド(列)のみを投影して取得する方法

MongoDBのプロジェクションとは

MongoDBでは、プロジェクション(projection)を使うことで、コレクションから取得するドキュメントのうち、表示したいフィールドだけを絞り込むことができます。大量のデータを扱う場合、不要なフィールドまで取得するとパフォーマンスに影響が出るため、必要な列だけを取り出すテクニックは非常に重要です。

この記事では、実際のコード例を使いながら、MongoDBで1つのフィールド(列)のみを投影して取得する方法を解説します。

ステップ1:サンプルデータのコレクションを作成する

まず、insertOne()メソッドを使って、ドキュメントを含むコレクションを作成します。ここでは「demo216」という名前のコレクションに、顧客名(ClientName)と年齢(ClientAge)を持つ3件のドキュメントを挿入しています。

> db.demo216.insertOne({"ClientName":"John","ClientAge":34});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3e351003d395bdc213470c")
}
> db.demo216.insertOne({"ClientName":"Bob","ClientAge":32});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3e351703d395bdc213470d")
}
> db.demo216.insertOne({"ClientName":"Mike","ClientAge":35});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3e351c03d395bdc213470e")
}

ステップ2:find()メソッドですべてのドキュメントを確認する

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

> db.demo216.find();

このクエリを実行すると、以下のような出力が得られます。デフォルトでは、_idフィールドを含むすべてのフィールドが返されていることが分かります。

{ "_id" : ObjectId("5e3e351003d395bdc213470c"), "ClientName" : "John", "ClientAge" : 34 }
{ "_id" : ObjectId("5e3e351703d395bdc213470d"), "ClientName" : "Bob", "ClientAge" : 32 }
{ "_id" : ObjectId("5e3e351c03d395bdc213470e"), "ClientName" : "Mike", "ClientAge" : 35 }

ステップ3:1つのフィールドのみを投影するクエリ

それでは本題です。「ClientName」だけを取得したい場合は、第2引数にプロジェクションを指定し、除外したいフィールドに0を設定します。ポイントは以下の通りです。

  • _id: 0 … 自動的に付与される_idフィールドを除外する
  • "ClientAge": 0 … 年齢フィールドを除外する
> db.demo216.find({},{_id:0,"ClientAge":0});

このクエリを実行すると、以下のようにClientNameのみが出力されます。

{ "ClientName" : "John" }
{ "ClientName" : "Bob" }
{ "ClientName" : "Mike" }

まとめ

MongoDBで特定の1つの列だけを取得したい場合は、find()の第2引数でプロジェクションを指定します。除外方式(0を指定)でも包含方式(1を指定)でも実現できますが、_idフィールドはデフォルトで含まれるため、必要に応じて_id: 0を明示的に指定する点に注意しましょう。プロジェクションを活用することで、転送データ量を減らし、アプリケーションのパフォーマンス向上につなげられます。

  1. MongoDBでコレクションの行数(ドキュメント数)をカウントする方法

    MongoDBでコレクション内のドキュメント数(行数)を取得するには、count()メソッドを使用します。まず、サンプルとなるコレクションにドキュメントを挿入してみましょう。1. コレクションへのドキュメント挿入insertOne()メソッドを使って、複数のドキュメントを順番に登録します。> db.demo664.insertOne({_id:1,ClientName:Chris}); { acknowledged : true, insertedId : 1 } > db.demo664.insertOne({_id:2,ClientName:Bob}); { acknowled

  2. MongoDBの集約(Aggregation)と投影(Projection)の使い方を解説

    MongoDBの集約と投影とはMongoDBで特定のフィールドだけを抽出しながらデータを加工したい場合、aggregate()メソッドと$projectステージを組み合わせるのが効果的です。$projectは、パイプライン内で指定されたフィールドを持つドキュメントだけを次のステージへ渡す役割を果たします。この記事では、実際にコレクションを作成し、$match・$unwind・$sort・$group・$projectを組み合わせた集約パイプラインの具体的な使い方を解説します。サンプルコレクションの作成まず、insertOne()を使ってドキュメントを含むコレクションを作成します。> db