MongoDBで全フィールドではなく特定のフィールドのみを選択する方法
MongoDBでは、find()メソッドにプロジェクション(射影)を指定することで、ドキュメントから不要なフィールドを除外し、必要なフィールドだけを取得できます。除外したいフィールドに0を設定するだけで実現可能です。
サンプルコレクションの作成
まず、ドキュメントを含むコレクションを作成しましょう。
> db.demo269.insertOne({StudentId:101,StudentSubject:"MySQL"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e481caa1627c0c63e7dbab4")
}
> db.demo269.insertOne({StudentId:102,StudentSubject:"Java"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e481cb11627c0c63e7dbab5")
}
> db.demo269.insertOne({StudentId:103,StudentSubject:"MongoDB"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e481cb21627c0c63e7dbab6")
}
> db.demo269.insertOne({StudentId:104,StudentSubject:"C"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e481cb21627c0c63e7dbab7")
}すべてのドキュメントを表示する
find()メソッドを使って、コレクション内のすべてのドキュメントを表示します。
> db.demo269.find();
このクエリを実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5e481caa1627c0c63e7dbab4"), "StudentId" : 101, "StudentSubject" : "MySQL" }
{ "_id" : ObjectId("5e481cb11627c0c63e7dbab5"), "StudentId" : 102, "StudentSubject" : "Java" }
{ "_id" : ObjectId("5e481cb21627c0c63e7dbab6"), "StudentId" : 103, "StudentSubject" : "MongoDB" }
{ "_id" : ObjectId("5e481cb21627c0c63e7dbab7"), "StudentId" : 104, "StudentSubject" : "C" }特定のフィールドを除外して取得する
すべてのフィールドではなく、特定のフィールドのみを選択したい場合は、第2引数にプロジェクションを指定します。以下のクエリでは、StudentIdと_idに0を設定して、これらのフィールドを結果から除外しています。
> db.demo269.find({},{"StudentId":0,_id:0});このクエリを実行すると、次のような出力が得られます。
{ "StudentSubject" : "MySQL" }
{ "StudentSubject" : "Java" }
{ "StudentSubject" : "MongoDB" }
{ "StudentSubject" : "C" }ポイント解説
- _idフィールドについて: MongoDBでは、明示的に指定しない限り
_idフィールドは常に返されます。そのため、_idを除外したい場合は必ず_id: 0と指定する必要があります。 - 包含と除外の混在禁止:
_id以外のフィールドについては、包含(1)と除外(0)を同じプロジェクション内で混在させることはできません。どちらか一方の方式で統一しましょう。
このように、プロジェクションを活用することで、取得するデータ量を最小限に抑えられ、アプリケーションのパフォーマンス向上にもつながります。
-
MongoDBで配列フィールドに対して$allを使って全要素に一致させる方法
配列フィールドの全要素に一致させるには MongoDBで配列内のすべての指定要素を含むドキュメントを検索したい場合には、$all 演算子を使用します。$all は、対象フィールドの値が配列であり、その配列が指定した要素をすべて含んでいるドキュメントだけを選択するクエリ演算子です。 ここでは、サンプルコレクションを作成し、実際に $all を使った検索手順を順番に見ていきましょう。 1. コレクションへのドキュメント登録 まずは insertOne() メソッドを使って、サンプルコレクション「demo695」にドキュメントを挿入します。 > db.demo695.insertOne({L
-
MongoDBで「_id」以外のすべてのフィールド値を表示するクエリ方法
MongoDBでは、ドキュメントを取得すると自動的に _id フィールドが含まれますが、場合によってはこのフィールドを除外し、他のフィールド値だけを表示したいことがあります。本記事では、コレクションの作成から、_id を除いたすべてのフィールド値を表示するまでの一連の手順を解説します。1. ドキュメントを含むコレクションを作成するまずは、サンプルとなるコレクションを作成しましょう。以下のコマンドを実行して、複数のドキュメントを一括挿入します。> db.demo590.insert([... { "Name": "