MongoDBで特定のフィールドのみを返す方法|find()のプロジェクション活用
MongoDBで特定のフィールドのみを返す方法
MongoDBでドキュメントから特定のフィールドだけを取得したい場合は、find()メソッドに「投影(プロジェクション)」を指定します。投影を利用することで、不要なデータを除き、必要な情報だけを効率的に取り出せます。
まずは、サンプルコレクションを作成してドキュメントを挿入し、その後に特定のフィールドを返すクエリを見ていきましょう。
1. コレクションの作成とドキュメントの挿入
insertOne()メソッドを使って、4件のドキュメントを「specificFieldDemo」コレクションに登録します。
> db.specificFieldDemo.insertOne({"FirstName":"John","LastName":"Doe"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cb8019a623186894665ae31")
}
> db.specificFieldDemo.insertOne({"FirstName":"John","LastName":"Smith"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cb801ab623186894665ae32")
}
> db.specificFieldDemo.insertOne({"FirstName":"David","LastName":"Miller"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cb801b3623186894665ae33")
}
> db.specificFieldDemo.insertOne({"FirstName":"Sam","LastName":"Williams"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cb801bf623186894665ae34")
}
2. すべてのドキュメントを表示する
登録されたすべてのドキュメントを確認するには、find()メソッドを使用します。
> db.specificFieldDemo.find().pretty();
実行すると、次のような出力が得られます。
{
"_id" : ObjectId("5cb8019a623186894665ae31"),
"FirstName" : "John",
"LastName" : "Doe"
}
{
"_id" : ObjectId("5cb801ab623186894665ae32"),
"FirstName" : "John",
"LastName" : "Smith"
}
{
"_id" : ObjectId("5cb801b3623186894665ae33"),
"FirstName" : "David",
"LastName" : "Miller"
}
{
"_id" : ObjectId("5cb801bf623186894665ae34"),
"FirstName" : "Sam",
"LastName" : "Williams"
}
3. 特定のフィールドのみを返す
特定のフィールドだけを返すには、find()メソッドの第2引数に投影を指定します。ここでは、「LastName」フィールドのみを返してみましょう。_id:0 を指定すると、デフォルトで出力される _id フィールドを非表示にでき、LastName:1 と指定することでこのフィールドが表示対象になります。
> db.specificFieldDemo.find({},{_id:0,LastName:1});
実行すると、次のように「LastName」だけが出力されます。
{ "LastName" : "Doe" }
{ "LastName" : "Smith" }
{ "LastName" : "Miller" }
{ "LastName" : "Williams" }
まとめ
MongoDBで特定のフィールドを返すには、find()メソッドの第2引数に投影(プロジェクション)を指定します。取得したいフィールドは「1」、除外したいフィールドは「0」と設定します。特に _id フィールドはデフォルトで含まれるため、不要な場合には必ず「_id: 0」を指定しておきましょう。
-
MongoDBで特定フィールドの値を合計するクエリの書き方(aggregate + $sum)
MongoDBでは、aggregate()メソッドと$group・$sum演算子を組み合わせることで、コレクション内のドキュメントに含まれる特定フィールドの値を簡単に合計できます。この記事では、実際のコマンド例を使いながら手順をわかりやすく解説します。1. サンプルコレクションの作成まず、ドキュメントを含むコレクションを作成します。ここではdemo677というコレクションに、Valueフィールドを持つ4件のドキュメントを挿入します。> db.demo677.insertOne({Value:10}); { acknowledged : true, insertedId :
-
MongoDBの_idフィールドを非表示にする方法
MongoDBの_idフィールドを非表示にする方法MongoDBでは、find()メソッドでドキュメントを検索すると、デフォルトで_idフィールド(ObjectId)が必ず結果に含まれます。しかし、射影(プロジェクション)という仕組みを使えば、この_idフィールドを非表示にし、必要なフィールドだけを取得することが可能です。本記事では、具体的な手順をサンプルコード付きで解説します。1. コレクションとドキュメントの作成まず、サンプル用のコレクションを作成し、ドキュメントを挿入します。> db.demo575.insertOne({id:101, Information:{Name:&quo