Overview
このガイドでは、 MongoDB PHPライブラリを使用して、挿入操作を実行し、 MongoDBコレクションにドキュメントを追加する方法を学習できます。
挿入操作は 、1 つ以上の ドキュメント をMongoDBコレクションに挿入します。 次の方法を使用して、挿入操作を実行できます。
MongoDB\Collection::insertOne()単一のドキュメントを挿入するメソッドMongoDB\Collection::insertMany()メソッドを使用して 1 つ以上のドキュメントを挿入します
サンプル データ
このガイドの例では、 Atlasサンプルデータセットのsample_restaurantsデータベースのrestaurantsコレクションを使用します。 PHPアプリケーションからこのコレクションにアクセスするには、Atlas クラスターに接続するMongoDB\Clientをインスタンス化し、次の値を$collection変数に割り当てます。
$collection = $client->sample_restaurants->restaurants;
MongoDB配置を作成し、サンプルデータセットをロードする方法については、MongoDBの使用開始ガイドを参照してください。
_id フィールド
MongoDB コレクションでは、各ドキュメントに一意のフィールド値を持つ_idフィールドが含まれている必要があります。
MongoDB では、このフィールドは次の 2 つの方法で管理できます。
各ドキュメントの
_idフィールドを自分で設定し、各値が一意であることを確認します。ドライバーがドキュメント
_idフィールドごとに一意のObjectId値を自動的に生成できるようにします。
一意性を保証できない限り、ドライバーに_id値を自動的に生成させることをお勧めします。
注意
重複した_id値はユニークインデックス制約に違反するため、ドライバーはMongoDB\Driver\Exception\BulkWriteExceptionエラーを返します。
_idフィールドの詳細については、 マニュアルの 「 一意なインデックス 」MongoDB Server のガイドを参照してください。
ドキュメント構造とルールの詳細については、MongoDB Server マニュアルのドキュメントガイド を参照してください。
1つのドキュメントの挿入
MongoDB コレクションに単一のドキュメントを追加するには、 MongoDB\Collection::insertOne()メソッドを呼び出して、追加するドキュメントを渡します。
次の例では、 restaurantsコレクションにドキュメントを挿入します。
$result = $collection->insertOne(['name' => 'Mongo\'s Burgers']);
複数のドキュメントの挿入
MongoDBコレクションに複数のドキュメントを追加するには 、 MongoDB\Collection::insertMany()メソッドを呼び出し、追加するドキュメントのリストを含む配列を渡します。
次の例では、 restaurantsコレクションに 2 つのドキュメントを挿入しています。
$restaurants = [ ['name' => 'Mongo\'s Burgers'], ['name' => 'Mongo\'s Pizza'], ]; $result = $collection->insertMany($restaurants);
挿入動作の変更
オプション値を指定する配列をパラメーターとして渡すことで、 MongoDB\Collection::insertOne()メソッドとMongoDB\Collection::insertMany()メソッドの動作を変更できます。 次の表では、 配列に設定できるオプションの一部を説明しています。
フィールド | 説明 |
|---|---|
| |
| 操作の書込み保証 (write |
|
|
|
例
次のコードでは、 insertMany()メソッドを使用して、3 つの新しいドキュメントをコレクションに挿入します。 bypassDocumentValidationフィールドはオプション配列でtrueに設定されているため、この挿入操作はドキュメントレベルの検証をバイパスします。
$docs = [ ['name' => 'Mongo\'s Burgers'], ['name' => 'Mongo\'s Pizza'], ['name' => 'Mongo\'s Tacos'], ]; $result = $collection->insertMany($docs, ['bypassDocumentValidation' => true]);
詳細情報
API ドキュメント
このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。