ドキュメントの挿入
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]);
詳細情報
MongoDB PHPライブラリを使用してドキュメントを挿入する実行可能なコード例については、「 MongoDBへのデータの書き込み 」を参照してください。
API ドキュメント
このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。