MongoDBのクエリで特定のフィールド(列)だけを取得する方法
MongoDBで特定のフィールド(列)のみを取得したい場合、プロジェクション(projection)を使用します。プロジェクションでは、表示したいフィールドに 1 を、非表示にしたいフィールドに 0 を指定することで、取得するデータを制御できます。
サンプルコレクションの作成
まず、ドキュメントを含むコレクションを作成しましょう。
> db.demo415.insertOne({"ClientName":"Robert","ClientCountryName":"US"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e72329db912067e57771adc")
}
> db.demo415.insertOne({"ClientName":"David","ClientCountryName":"UK"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e7232acb912067e57771add")
}
> db.demo415.insertOne({"ClientName":"Bob","ClientCountryName":"AUS"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e7232b4b912067e57771ade")
}find()メソッドですべてのドキュメントを表示
find() メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。
> db.demo415.find();
実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5e72329db912067e57771adc"), "ClientName" : "Robert", "ClientCountryName" : "US" }
{ "_id" : ObjectId("5e7232acb912067e57771add"), "ClientName" : "David", "ClientCountryName" : "UK" }
{ "_id" : ObjectId("5e7232b4b912067e57771ade"), "ClientName" : "Bob", "ClientCountryName" : "AUS" }特定のフィールドのみを取得するクエリ
ここで、「ClientCountryName」フィールドだけを表示したい場合は、それ以外のフィールド(_id と ClientName)に 0 を設定して除外します。
> db.demo415.find({},{_id:0,ClientName:0});実行結果は以下のとおりです。
{ "ClientCountryName" : "US" }
{ "ClientCountryName" : "UK" }
{ "ClientCountryName" : "AUS" }補足:プロジェクションの注意点
プロジェクションを使用する際は、以下のルールに注意が必要です。
_idフィールドは、明示的に_id:0を指定しない限り、常に結果に含まれます。1(表示)と0(非表示)を混在させることはできません。ただし、_id:0のみ例外です。- 特定のフィールドだけを表示したい場合は、そのフィールドに
1を指定します。例:db.demo415.find({}, {ClientCountryName:1, _id:0})
このように、プロジェクションを活用することで、必要なデータだけを効率的に取得でき、ネットワーク帯域やアプリケーションのパフォーマンス向上にもつながります。
-
MongoDBで特定のフィールド値のみを更新するクエリの書き方
MongoDBでは、update()メソッドと$set演算子を組み合わせることで、ドキュメント全体を置き換えることなく、特定のフィールドの値だけを効率的に更新できます。本記事では、実際のコード例を通じて、その具体的な手順をわかりやすく解説します。 1. コレクションとドキュメントの作成 まずは例として、insertOne()メソッドを使って「demo557」というコレクションにドキュメントを挿入します。 > db.demo557.insertOne({Name:Chris}); { acknowledged : true, insertedId : ObjectId(5e8
-
MongoDBでSQLのLIKE検索と同じことを実現する方法
MongoDBにおけるLIKE検索の基本SQLの「LIKE」句のように部分一致でデータを検索したい場合、MongoDBでは find() メソッドと正規表現(//)を組み合わせることで同様の処理を実現できます。この記事では、実際にコレクションを作成し、正規表現を使ったLIKE検索の具体的な手順を解説します。テスト用コレクションの作成まず、サンプルとなるドキュメントを含むコレクションを作成しましょう。ここでは「FirstName」というフィールドを持つドキュメントをいくつか登録します。> db.demo686.insertOne({FirstName:Robert});{ &nb