MongoDBでコレクション内の全ドキュメントから特定の1つのフィールドだけを表示する方法
MongoDBでは「プロジェクション(射影)」を使うことで、取得するドキュメントの中から選択したフィールドだけを表示できます。表示したいフィールドには 1 を設定し、逆に非表示にしたいフィールドには 0 を設定します。
サンプルコレクションの作成
まず、ドキュメントを含むコレクションを作成しましょう。ここでは demo384 というコレクションに、学生の名前と国名を登録します。
> db.demo384.insertOne({"StudentName":"Chris Brown","StudentCountryName":"US"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e5b67a022064be7ab44e7f2")
}
> db.demo384.insertOne({"StudentName":"David Miller","StudentCountryName":"AUS"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e5b67ab22064be7ab44e7f3")
}
> db.demo384.insertOne({"StudentName":"John Doe","StudentCountryName":"UK"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e5b67b422064be7ab44e7f4")
}find()メソッドですべてのドキュメントを表示
find() メソッドを使うと、コレクション内のすべてのドキュメントを確認できます。
> db.demo384.find();
このクエリを実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5e5b67a022064be7ab44e7f2"), "StudentName" : "Chris Brown", "StudentCountryName" : "US" }
{ "_id" : ObjectId("5e5b67ab22064be7ab44e7f3"), "StudentName" : "David Miller", "StudentCountryName" : "AUS" }
{ "_id" : ObjectId("5e5b67b422064be7ab44e7f4"), "StudentName" : "John Doe", "StudentCountryName" : "UK" }1つのフィールドのみを表示するクエリ
ここで、StudentCountryName フィールドだけを表示し、それ以外(_id や StudentName)を除外したい場合は、プロジェクションで該当フィールド以外に 0 を指定します。
> db.demo384.find({},{_id:0,StudentName:0});実行結果は以下の通りです。StudentCountryName の値だけが抽出されていることがわかります。
{ "StudentCountryName" : "US" }
{ "StudentCountryName" : "AUS" }
{ "StudentCountryName" : "UK" }ポイントまとめ
プロジェクションを使用する際は、以下の点に注意してください。
_idフィールドはデフォルトで表示されるため、不要な場合は明示的に_id:0を指定します。- 包含(1)と除外(0)は基本的に混在できませんが、
_idフィールドのみ例外として両方の指定が可能です。 - 特定のフィールドだけを取り出すことで、ネットワーク転送量やアプリケーション側の処理負荷を軽減できます。
-
【MongoDB】ネストされたドキュメントのキー名のみを抽出して表示する方法
MongoDBでは、配列内にネストされたドキュメント(サブドキュメント)のキー名だけを一覧として取得したいケースがあります。本記事では、insertOne()でサンプルデータを作成し、find()で内容を確認した後、集計パイプラインの$reduce、$objectToArray、$map、$concatArraysを組み合わせて、ネストされたドキュメントのキー名のみを抽出する方法を実行例付きで解説します。 1. サンプルコレクションの作成 まず、insertOne()メソッドを使って、detailsフィールドに複数のドキュメントを持つ配列を含むコレクションを作成します。 > db.dem
-
Javaを使ってMongoDBコレクションからすべてのドキュメントを取得する方法
MongoDBでは、find()メソッドを使用することで、既存のコレクションからドキュメントを取得できます。この記事では、MongoDBシェルでの基本操作と、Javaプログラムからすべてのドキュメントを取得する手順について詳しく解説します。MongoDBシェルでの構文db.coll.find()各要素の意味は以下のとおりです。db:対象となるデータベースcoll:ドキュメントを取得したいコレクションの名前シェルでの実行例ここでは、MongoDBデータベース内に「students」というコレクションがあり、次のドキュメントが登録されているものとします。{name:"Ram",