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 Atlasクラスターを無料で作成して、サンプルデータセットをロードする方法については、 「Atlas を使い始める」ガイドを参照してください。
_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()メソッドの動作を変更できます。 次の表では、 配列に設定できるオプションの一部を説明しています。
フィールド | 説明 |
|---|---|
| If set to true, allows the write operation to opt out of
document-level validation.Defaults to false.Type: bool |
| Sets the write concern for the operation. Defaults to the write concern of the namespace. Type: MongoDB\Driver\WriteConcern |
| If set to true, the operation stops inserting documents when one insert
fails. If false, the operation continues to insert the remaining documents
when one insert fails. You cannot pass this option to the insertOne() method.Defaults to true.Type: bool |
| A comment to attach to the operation. For more information, see the insert command
fields guide in the
MongoDB Server manual. Type: any valid BSON type |
例
次のコードでは、 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 ドキュメントを参照してください。