MongoDBのfind()で特定のフィールドを除外して取得する方法
MongoDBのfind()クエリで不要なフィールドを除外する基本構文
MongoDBでは、find()メソッドの第2引数に射影(プロジェクション)を指定することで、結果から表示したくないフィールドを除外できます。除外したいフィールドには 0 を設定します。
以下が基本の構文です。ここでは「yourFieldName1」と「yourFieldName2」という2つのフィールドを除外しています。
db.yourCollectionName.find(yourQuery, {yourFieldName1: 0, yourFieldName2: 0});サンプルコレクションの作成
実際に動作を確認するため、ドキュメントを含むコレクションを作成してみましょう。
> db.demo567.insertOne({"Name":"Chris", Age:21});
{ "acknowledged" : true, "insertedId" : ObjectId("5e908fa139cfeaaf0b97b57b") }
> db.demo567.insertOne({"Name":"David", Age:23});
{ "acknowledged" : true, "insertedId" : ObjectId("5e908fa939cfeaaf0b97b57c") }
> db.demo567.insertOne({"Name":"Bob", Age:22});
{ "acknowledged" : true, "insertedId" : ObjectId("5e908faf39cfeaaf0b97b57d") }
> db.demo567.insertOne({"Name":"Carol", Age:20});
{ "acknowledged" : true, "insertedId" : ObjectId("5e908fb539cfeaaf0b97b57e") }全ドキュメントの確認
find()メソッドを使って、コレクション内のすべてのドキュメントを表示します。
> db.demo567.find();
このクエリを実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5e908fa139cfeaaf0b97b57b"), "Name" : "Chris", "Age" : 21 }
{ "_id" : ObjectId("5e908fa939cfeaaf0b97b57c"), "Name" : "David", "Age" : 23 }
{ "_id" : ObjectId("5e908faf39cfeaaf0b97b57d"), "Name" : "Bob", "Age" : 22 }
{ "_id" : ObjectId("5e908fb539cfeaaf0b97b57e"), "Name" : "Carol", "Age" : 20 }find()でフィールドを除外するクエリの実行例
それでは、find()で一部のフィールドを除外するクエリを見てみましょう。ここでは条件として$in演算子を使用し、「Chris」と「Bob」に一致するドキュメントから「Age」フィールドと「_id」フィールドを除外しています。
> db.demo567.find({Name: {$in:["Chris","Bob"]}}, {Age: 0, _id: 0});実行結果は以下のとおりです。「Age」と「_id」が除外され、「Name」だけが表示されていることがわかります。
{ "Name" : "Chris" }
{ "Name" : "Bob" }ポイントまとめ
- 射影(プロジェクション)では、除外したいフィールドに
0を指定します。 - 逆に、表示したいフィールドだけを指定したい場合は
1を使います(ただし両者を混在できるのは_idのみです)。 _idフィールドはデフォルトで表示されるため、非表示にしたい場合は明示的に_id: 0を指定しましょう。
-
MongoDBのexplain()でクエリプランを読み解く:db.collection.find()と正規表検索の実践解説
MongoDBでは、explain()メソッドを使用することで、クエリがどのように実行されるかを示すクエリプランの詳細情報を確認できます。本記事では、サンプルコレクションを作成し、正規表現を使ったfind()クエリの実行プランを2つのケースに分けて解説します。準備:コレクションの作成とドキュメントの挿入まず、ClientNameフィールドにインデックスを作成したうえで、テスト用コレクションdemo637にドキュメントを挿入します。> db.demo637.ensureIndex({ClientName:1}); { createdCollectionAutomatically :
-
MongoDBでコレクションの名前を変更する方法(renameCollectionの使い方)
MongoDBで既存のコレクションの名前を変更したい場合、renameCollection()メソッドを使用します。この記事では、実際にコレクションを作成し、その名前を変更するまでの手順を順番に解説します。1. ドキュメントを含むコレクションを作成するまず、insertOne()メソッドを使ってサンプルドキュメントを挿入し、コレクション「demo690」を作成します。> db.demo690.insertOne({_id:101,Name:Sam}); { acknowledged : true, insertedId : 101 } > db.demo690.insertOne(