データベースとコレクション
Overview
このガイドでは、 MongoDB PHPライブラリでMongoDBの データベース と コレクション を使用する方法を学習できます。
MongoDB では、データは次のレベルの階層に整理されています。
データベース: コレクションを保存するMongoDBデプロイの最上位のデータ構造。
コレクション: MongoDBドキュメントのグループ。 関係データベースのテーブルに類似しています。
ドキュメント: string 、数値、日付などのリテラル データを保存するユニット。およびその他の埋め込みドキュメントを保存するユニット。 ドキュメントフィールドのタイプと構造の詳細については、 MongoDB Serverマニュアルのドキュメントガイドを参照してください。
データベースへのアクセス
データベース名を MongoDB\Client::selectDatabase()
メソッドに渡して、データベースにアクセスします。
次の例えではtest_database
という名前のデータベースにアクセスします。
$db = $client->selectDatabase('test_database');
あるいは、クライアントオブジェクトでMongoDB\Client::__get()
メソッドを暗黙的に呼び出すこともできます。 このメソッドでは、クラスプロパティにアクセスするための構文を使用してデータベースを選択できます。 次の例では、この短縮構文を使用してtest_database
データベースにアクセスします。
$db = $client->test_database;
Tip
__get()
およびPHPフラグ メソッドの詳細については、次のリソースを参照してください。
MongoDB\Client::__get()
(ライブラリAPIドキュメントの場合
コレクションにアクセスする
次のいずれかの方法を使用してコレクションにアクセスします。
MongoDB\Client::selectCollection()
:データベース名とコレクション名をパラメーターとして渡しますMongoDB\Database::selectCollection()
:コレクション名を パラメーターとして渡します
次の例では、 MongoDB\Database::selectCollection()
メソッドを使用して、 test_collection
という名前のコレクションにアクセスします。
$collection = $client->test_database->selectCollection('test_collection');
Tip
指定されたコレクション名がデータベースにまだ存在しない場合、MongoDB は最初にデータを挿入するときに暗黙的にコレクションを作成します。
あるいは、データベースオブジェクトでMongoDB\Database::__get()
メソッドを暗黙的に呼び出すこともできます。 このメソッドでは、クラスプロパティにアクセスするための構文を使用してコレクションを選択できます。 次の例では、この短縮構文を使用してtest_collection
コレクションにアクセスします。
$collection = $db->test_collection;
詳しくは、 MongoDB\Database::__get()
APIドキュメントを参照してください。
コレクションを作成する
コレクション名をMongoDB\Database::createCollection()
メソッドに渡して、 MongoDBデータベースに明示的にコレクションを作成します。
次の例では、 example_collection
という名前のコレクションを作成します。
$result = $client->test_database->createCollection('example_collection');
配列としてcreateCollection()
メソッドに渡すことで、最大サイズやドキュメント検証ルールなどのコレクションオプションを指定できます。 オプションのパラメーターの完全なリストについては、 APIドキュメント を参照してください。
コレクションの一覧を取得する
MongoDB\Database::listCollections()
メソッドを呼び出すと、データベース内のコレクションのリストをクエリできます。 メソッドは、データベース内のすべてのコレクションとそれに関連するメタデータを含むカーソルを返します。
次の例では、 listCollections()
メソッドを呼び出し、返されたイテレータを反復処理して、 コレクションへのアクセス と コレクションの作成 の例からコレクションを出力します。
foreach ($client->test_database->listCollections() as $collectionInfo) { print_r($collectionInfo) . PHP_EOL; }
MongoDB\Model\CollectionInfo Object ( [name] => example_collection [type] => collection ... ) MongoDB\Model\CollectionInfo Object ( [name] => test_collection [type] => collection ... )
コレクションの削除
データベースからコレクションを削除するには、 MongoDB\Database::dropCollection()
メソッドを使用します。
次の例では、 test_collection
コレクションを削除しています。
$client->test_database->dropCollection('test_collection');
警告
コレクションを削除すると、コレクション内のすべてのデータが削除されます
データベースからコレクションを削除すると、そのコレクション内のすべてのドキュメントとすべてのインデックスが永続的に削除されます。
データが不要になった場合にのみコレクションを削除します。
読み取り操作と書込み操作の設定
レプリカセットでの読み取りおよび書込み操作の実行方法を制御するには、 読み込み設定( 読み込み設定 (read preference)) 、 読み取り保証( 読み取り保証 (read concern)) 、または書込み保証( 書込み保証 (write concern)) を指定します。
デフォルトでは 、データベースはMongoDB\Client
インスタンスから読み取りおよび書込み設定を継承します。 コレクションは、 selectCollection()
メソッドが呼び出されるMongoDB\Client
またはMongoDB\Database
インスタンスからこれらの設定を継承します。 これらの設定を変更するには、オプション配列をMongoDB\Client::selectDatabase()
、 MongoDB\Client::selectCollection()
、またはMongoDB\Database::selectCollection()
メソッドに渡します。
読み込み設定( 読み込み設定 (read preference)) 、読み取り保証( 読み取り保証 (read concern)) 、書込み保証( 書込み保証 (write concern)) の設定の詳細については、「レプリカセットでCRUD操作を実行する方法を指定する 」ガイドを参照してください。
API ドキュメント
このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。