MongoDB コレクション内のすべてのドキュメントに対して単一または複数のフィールドを選択する

Tahseen Tauseef 2024年2月15日
  1. MongoDB コレクション内のすべてのドキュメントに対して単一または複数のフィールドを選択する
  2. 射影法を使用して、MongoDB コレクション内のすべてのドキュメントに対して単一または複数のフィールドを選択する
  3. まとめ
MongoDB コレクション内のすべてのドキュメントに対して単一または複数のフィールドを選択する

インターネットの世界的な普及に伴い、今までにないスピードでデータが生成されています。 分析を行うには、データベースから必要なデータを収集または要求する必要があるため、データを照会するための適切なツールを選択する必要があります。

この記事では、投影を通じて基本的なクエリ操作を実行することにより、MongoDB コレクション内のすべてのドキュメントに対して単一または複数のフィールドを選択する方法を学習します。

MongoDB コレクション内のすべてのドキュメントに対して単一または複数のフィールドを選択する

MongoDB は、データをドキュメントの形式で保存する非構造化データベース管理システムです。 さらに、MongoDB は大量のデータの処理にも優れています。

これは、包括的なクエリ言語とユニバーサルで簡単なデータ アクセスを提供するため、最も広く使用されている NoSQL データベースです。 たとえば、MongoDB がアプリケーションに送信するデータの量を制限するために、射影ドキュメントを含めて、返されるフィールドを指定または制限できます。

プロジェクションには、複数のフィールドを明示的に含めることができます。 この記事で使用されている次の例では、find() メソッドはクエリに一致するすべてのドキュメントを返します。

投影法の構文は次のとおりです。

db.collection.find( { <someOtherArray>: <condition> ... },
                    { "<array>.$" : 1 } )

クエリ ドキュメントと射影ドキュメントで使用される配列は、意図した動作を保証するために同じ長さである必要があります。 配列の長さが異なる場合、特定のシナリオで操作がエラーになることがあります。

サンプル データベースの作成

開始する前に、すべての操作を実行するためのサンプル データを含むサンプル データベースを作成します。 teams という名前のコレクションが作成され、次のレコードが teams コレクション内に挿入されました。

このコレクションは、この MongoDB チュートリアル記事のすべての例で使用されます。 コレクションを以下に示します。

db={
  "teams": [
    {
      team: "Manchester City ",
      position: "1st",
      points: 70
    },
    {
      team: "Liverpool",
      position: "2nd",
      points: 69
    },
    {
      team: "Chelsea",
      position: "3rd",
      points: 59
    },
    {
      team: "Arsenal",
      position: "4th",
      points: 54
    },
    {
      team: "Tottenham",
      position: "5th",
      points: 51
    },
    {
      team: "Manchester United",
      position: "6th",
      points: 50
    }
  ]
}

find() メソッドを使用してドキュメントをクエリする

MongoDB コレクションからドキュメントをクエリするには、find() メソッドを使用する必要があります。 たとえば、次のステートメントは、コレクションからすべてのドキュメントを取得します。

1つのドキュメントに大量のデータを含むコレクションがあるとします。 teams コレクションがあり、必要なフィールドをいくつか選択します。

クエリ:

db.teams.find({});

出力:

単一フィールドの選択

射影法を使用して、MongoDB コレクション内のすべてのドキュメントに対して単一または複数のフィールドを選択する

プロジェクションには、複数のフィールドを明示的に含めることができます。 find() メソッドは、次の操作でクエリに一致するすべてのページを返します。

コレクションから選択したフィールドのみを取得する場合は、射影法を使用できます。

そのためには、まず以下に示す MongoDB クエリ構文を理解する必要があります。

db.collections.find(
    // basic filtering based on the passed-in key values
    {},
    // selecting the fields
    {});

2 番目のパラメーターは、find() メソッドに渡すことができます。 findOne() メソッドでも機能します。

team フィールドを選択しましょう。 ここでもう 1つトリックを学ぶ必要があります。 キーは、選択するフィールドとその値になります。

フィールドを選択する場合、値は 1 になります。 0 はフィールドの選択を解除します。

次に、理解を深めるために、以下に示すいくつかの例を見てみましょう。

Team 名前フィールドのみを選択する

この例では、以下のクエリが使用されます。

db.teams.find({},
{
  team: 1
})

出力:

単一フィールドの選択 1

ここでは、team フィールドのみを選択することに成功しました。 ただし、明示的に渡さなくても _id フィールドが含まれています。

ただし、デフォルトでは、mongo クエリには常に _id フィールドがあります。

_id フィールドの選択を解除する

次の例では、_id フィールド自体の選択を解除できます。

このクエリは次のとおりです。

db.teams.find({},
{
  team: 1,
  _id: 0
})

出力:

単一フィールドの選択 2

チーム 名と ポイント フィールドのみを選択する

次のステートメントは、team 名と points フィールドのみをフェッチします。

この例では、以下のクエリが使用されます。

db.teams.find({},
{
  team: 1,
  points: 1,
  _id: 0
})

出力:

単一フィールドの選択 3

まとめ

したがって、この MongoDB チュートリアルを完了した後、返されるフィールドを指定または制限するプロジェクションを通じて基本的なクエリ操作を実行することにより、MongoDB コレクション内のすべてのドキュメントに対して単一または複数のフィールドを選択する方法を学習しました。

関連記事 - MongoDB Projection