MySQL 8.0 リファレンスマニュアル


20.4.3.2 コレクションの操作

スキーマ内のコレクションを操作するには、db グローバルオブジェクトを使用して現在のスキーマにアクセスします。 この例では、以前にインポートした world_x スキーマと countryinfo コレクションを使用しています。 したがって、発行する操作の形式は db.collection_name.operation で、collection_name は操作の実行対象となるコレクションの名前です。 次の例では、操作は countryinfo コレクションに対して実行されます。

ドキュメントの追加

add() メソッドを使用して、あるドキュメントまたはドキュメントのリストを既存のコレクションに挿入します。 次のドキュメントを countryinfo コレクションに挿入します。 これは複数行コンテンツであるため、Enter を 2 回押してドキュメントを挿入します。

mysql-py> db.countryinfo.add(
 {
    "GNP": .6,
    "IndepYear": 1967,
    "Name": "Sealand",
    "Code:": "SEA",
    "demographics": {
        "LifeExpectancy": 79,
        "Population": 27
    },
    "geography": {
        "Continent": "Europe",
        "Region": "British Islands",
        "SurfaceArea": 193
    },
    "government": {
        "GovernmentForm": "Monarchy",
        "HeadOfState": "Michael Bates"
    }
  }
)

このメソッドは、操作のステータスを返します。 ドキュメントを検索して操作を確認できます。 例:

mysql-py> db.countryinfo.find("Name = 'Sealand'")
{
    "GNP": 0.6,
    "_id": "00005e2ff4af00000000000000f4",
    "Name": "Sealand",
    "Code:": "SEA",
    "IndepYear": 1967,
    "geography": {
        "Region": "British Islands",
        "Continent": "Europe",
        "SurfaceArea": 193
    },
    "government": {
        "HeadOfState": "Michael Bates",
        "GovernmentForm": "Monarchy"
    },
    "demographics": {
        "Population": 27,
        "LifeExpectancy": 79
    }
}

ドキュメントの追加時に指定されたフィールドに加えて、_id というフィールドもあります。 各ドキュメントには、_id と呼ばれる識別子フィールドが必要です。 _id フィールドの値は、同じコレクション内のすべてのドキュメント間で一意である必要があります。 MySQL 8.0.11 以上では、ドキュメント ID はクライアントではなくサーバーによって生成されるため、MySQL Shell は_id 値を自動的に設定しません。 8.0.11 以上の MySQL サーバーでは、ドキュメントに_id フィールドが含まれていない場合、_id 値が設定されます。 以前の 8.0 リリースまたは 5.7 の MySQL サーバーは、この状況では_id 値を設定しないため、明示的に指定する必要があります。 そうでない場合、MySQL Shell はエラー 5115 「文書に必須フィールドがありません」を返します。 詳細は、Understanding Document IDs を参照してください。

関連情報

関連キーワード:  ドキュメント, コレクション, 操作, テーブル, リファレンス, Shell, 削除, フィールド, マニュアル, 挿入