MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBで単一フィールドのみを取得する方法【find()のプロジェクション解説】

MongoDBで単一フィールドを選択する基本構文

MongoDBでは、find()メソッドの第2引数に「プロジェクション(射影)」を指定することで、コレクションから特定のフィールドだけを取得できます。単一のフィールドを選択する場合の基本構文は以下のとおりです。

db.yourCollectionName.find({"yourFieldName":yourValue},{"yourSingleFieldName":1,_id:0});

この構文において、"yourSingleFieldName":1 は「指定したフィールドを取得する」ことを意味し、_id:0 は「_idフィールドを結果から除外する」ことを意味します。つまり、_idを含めずに、目的の1つのフィールドのデータだけを取得できるのです。

サンプルコレクションの作成

構文の動きを理解するために、まずドキュメントを含むコレクションを作成しましょう。以下のクエリでコレクションとドキュメントを登録します。

> db.singleFieldDemo.insertOne({"StudentName":"David","StudentAge":28});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c6eba356fd07954a489067c")
}
> db.singleFieldDemo.insertOne({"StudentName":"Bob","StudentAge":18});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c6eba406fd07954a489067d")
}
> db.singleFieldDemo.insertOne({"StudentName":"Chris","StudentAge":24});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c6eba4c6fd07954a489067e")
}
> db.singleFieldDemo.insertOne({"StudentName":"Robert","StudentAge":26});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c6eba586fd07954a489067f")
}

ここでは、学生の名前(StudentName)と年齢(StudentAge)を持つ4件のドキュメントを「singleFieldDemo」コレクションに挿入しました。

find()メソッドですべてのドキュメントを表示する

find()メソッドを使うと、コレクション内のすべてのドキュメントを確認できます。pretty()を付けることで、見やすい形式で出力されます。

> db.singleFieldDemo.find().pretty();

実行結果は以下のとおりです。

{
    "_id" : ObjectId("5c6eba356fd07954a489067c"),
    "StudentName" : "David",
    "StudentAge" : 28
}
{
    "_id" : ObjectId("5c6eba406fd07954a489067d"),
    "StudentName" : "Bob",
    "StudentAge" : 18
}
{
    "_id" : ObjectId("5c6eba4c6fd07954a489067e"),
    "StudentName" : "Chris",
    "StudentAge" : 24
}
{
    "_id" : ObjectId("5c6eba586fd07954a489067f"),
    "StudentName" : "Robert",
    "StudentAge" : 26
}

単一フィールドを選択するクエリの実行例

それでは、実際に単一のフィールドだけを取得するクエリを実行してみましょう。ここでは、StudentAgeが18のドキュメントを検索し、StudentNameフィールドのみを取得します。

> db.singleFieldDemo.find({"StudentAge":18},{"StudentName":1,"_id":0});

実行結果は以下のとおりです。

{ "StudentName" : "Bob" }

このように、検索条件(第1引数)でドキュメントを絞り込み、プロジェクション(第2引数)で"StudentName":1"_id":0を指定することで、StudentNameの値だけを取得できました。_idはデフォルトで必ず返されるため、不要な場合は明示的に_id:0を指定して除外する点に注意してください。

  1. 1つのコマンドでMongoDBを安全に停止する方法|shutdownServerの使い方を解説

    単一コマンドでMongoDBを停止する方法 MongoDBサーバーを1つのコマンドで停止したい場合は、mongoシェルの--evalオプションを使い、adminデータベースに対してshutdownServer()を実行するのが最も簡単な方法です。 使用するコマンドの基本構文は以下の通りです。 mongo --eval db.getSiblingDB(admin).shutdownServer() getSiblingDB(admin)でadminデータベースに切り替えてからshutdownServer()を呼び出すことで、接続中のMongoDBサーバーをシャットダウンできます。 実行手順 そ

  2. MongoDBでフィールドごとにドキュメントをグループ化して取得する方法

    MongoDBで特定のフィールドを基準にドキュメントをグループ化して取得したい場合は、集計(Aggregation)パイプラインの $group と $project を組み合わせるのが基本です。この記事では、実際にコレクションを作成しながら、その手順を具体的に解説します。 1. サンプルコレクションの作成 まず、insertOne() メソッドを使って demo540 コレクションに複数のドキュメントを挿入します。 > db.demo540.insertOne({id:1,Name:Chris,CountryName:US}); { acknowledged : true,