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

MongoDBで特定のフィールドだけを結果として取得する方法

MongoDBで特定のフィールドを取得するには

MongoDBでクエリの結果として特定のフィールドのみを取得したい場合は、findOne()メソッドを使用します。第1引数に検索条件を指定し、第2引数に投影(プロジェクション)を指定することで、必要なフィールドだけを絞り込んで取得できます。

基本的な構文は以下のとおりです。

db.yourCollectionName.findOne({"yourFieldName1": yourValue}, {yourFieldName2: 1});

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

まず、ドキュメントを含むコレクションを作成しましょう。ここでは従業員情報を格納するparticularFieldDemoというコレクションを作成します。

> db.particularFieldDemo.insertOne({"EmployeeName":"John Smith","EmployeeAge":26,"EmployeeTechnology":"MongoDB"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5cd9b4abb50a6c6dd317ada2")
}
> db.particularFieldDemo.insertOne({"EmployeeName":"Chris Brown","EmployeeAge":28,"EmployeeTechnology":"Java"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5cd9b4d2b50a6c6dd317ada3")
}
> db.particularFieldDemo.insertOne({"EmployeeName":"David Miller","EmployeeAge":30,"EmployeeTechnology":"MySQL"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5cd9b4e8b50a6c6dd317ada4")
}
> db.particularFieldDemo.insertOne({"EmployeeName":"John Doe","EmployeeAge":31,"EmployeeTechnology":"C++"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5cd9b527b50a6c6dd317ada5")
}

登録されたドキュメントの確認

find()メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。見やすくするためにpretty()を付けて実行します。

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

上記のクエリを実行すると、次のような出力が得られます。

{
    "_id" : ObjectId("5cd9b4abb50a6c6dd317ada2"),
    "EmployeeName" : "John Smith",
    "EmployeeAge" : 26,
    "EmployeeTechnology" : "MongoDB"
}
{
    "_id" : ObjectId("5cd9b4d2b50a6c6dd317ada3"),
    "EmployeeName" : "Chris Brown",
    "EmployeeAge" : 28,
    "EmployeeTechnology" : "Java"
}
{
    "_id" : ObjectId("5cd9b4e8b50a6c6dd317ada4"),
    "EmployeeName" : "David Miller",
    "EmployeeAge" : 30,
    "EmployeeTechnology" : "MySQL"
}
{
    "_id" : ObjectId("5cd9b527b50a6c6dd317ada5"),
    "EmployeeName" : "John Doe",
    "EmployeeAge" : 31,
    "EmployeeTechnology" : "C++"
}

findOne()で特定のフィールドを取得する

それでは、条件に一致するドキュメントから特定のフィールドだけを取り出してみましょう。以下の例では、「EmployeeTechnology」が「Java」であるドキュメントを検索し、「EmployeeName」フィールドのみを結果として返します。

> db.particularFieldDemo.findOne({"EmployeeTechnology":"Java"},{EmployeeName:1});

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

{
    "_id" : ObjectId("5cd9b4d2b50a6c6dd317ada3"),
    "EmployeeName" : "Chris Brown"
}

ポイントの解説

このように、プロジェクションで{EmployeeName: 1}のようにフィールド名に「1」を指定すると、そのフィールドが結果に含まれます。指定しなかった他のフィールド(この例では「EmployeeAge」や「EmployeeTechnology」)は出力から除外されます。

なお、_idフィールドはデフォルトで常に返されます。もし_idを結果に含めたくない場合は、{_id: 0, EmployeeName: 1}のように明示的に「0」を指定して除外できます。

また、findOne()は条件に一致した最初の1件のみを返すメソッドです。複数件のドキュメントから特定のフィールドを取得したい場合は、同じプロジェクションの考え方をfind()メソッドに適用してください。

  1. MongoDBの$project演算子でフィールドを射影(プロジェクション)する方法

    MongoDBの集計パイプライン(aggregation pipeline)において、ドキュメントから特定のフィールドを射影(プロジェクション)して出力形式を整形したい場合は、$project ステージを使用します。$project を使うと、表示するフィールドの選択だけでなく、$cond や $ifNull などの演算子を組み合わせて、条件に応じた値の変換や代替値の設定も可能です。この記事では、実際にコレクションを作成し、$project を使ってネストされたフィールドを条件付きで射影する方法を解説します。1. サンプルコレクションの作成まず、insertOne() メソッドを使って、ドキュ

  2. MongoDBの_idフィールドを非表示にする方法

    MongoDBの_idフィールドを非表示にする方法MongoDBでは、find()メソッドでドキュメントを検索すると、デフォルトで_idフィールド(ObjectId)が必ず結果に含まれます。しかし、射影(プロジェクション)という仕組みを使えば、この_idフィールドを非表示にし、必要なフィールドだけを取得することが可能です。本記事では、具体的な手順をサンプルコード付きで解説します。1. コレクションとドキュメントの作成まず、サンプル用のコレクションを作成し、ドキュメントを挿入します。> db.demo575.insertOne({id:101, Information:{Name:&quo