Overview
このガイドでは、Lambda MongoDBを使用して、LambelアプリケーションからMongoDBコレクションにドキュメントを挿入する方法を学習できます。
ドキュメントを挿入するときは、データがコレクションの一意のインデックスに違反していないことを確認してください。 コレクションの最初のドキュメントを挿入するとき、または新しいコレクションを作成するときに、MongoDB は_idフィールドに一意のインデックスを自動的に作成します。
Lambda スキーマ ビルダを使用して MongoDB コレクションにインデックスを作成する方法の詳細については、スキーマ ビルダ ドキュメントの「インデックスの管理」セクションを参照してください。
Lalavel 統合の Eloqueent モデルの詳細については、「 データのモデル化 」セクションを参照してください。
サンプル モデル
このガイドの操作は、次の Elastic モデルクラス を参照。
namespace App\Models; use MongoDB\Laravel\Eloquent\Model; class Concert extends Model { protected $connection = 'mongodb'; protected $fillable = ['performer', 'venue', 'genres', 'ticketsSold', 'performanceDate']; protected $casts = ['performanceDate' => 'datetime']; }
Tip
$fillable属性を使用すると、挿入操作に Lambda の一括割り当てを使用できます。 一括割り当ての詳細については、 Elastic モデル クラス ドキュメントの「 一括割り当てのカスタマイズ」を参照してください。
$casts 属性は、属性を一般的なデータ型に変換するように Lambel に指示します。詳細については、Lambda ドキュメントの「 属性キャスティング 」を参照してください。
1つのドキュメントの挿入
このセクションの例では、save() と create() Eloqueent メソッドを使用して、Concert モデルのインスタンスをMongoDBドキュメントとして挿入する方法を示します。
Save() メソッド
save()メソッドが成功すると、 メソッドを呼び出したモデル インスタンスにアクセスできるようになります。
操作が失敗した場合、モデル インスタンスにはnullが割り当てられます。
このサンプル コードでは、次のアクションが実行されます。
Concertモデルの新しいインスタンスを作成しますフィールドと フィールドに string 値を割り当てます
performervenue文字列の配列を
genreフィールドに割り当てますticketsSoldフィールドに数値を割り当てますCarbonパッケージを使用してperformanceDateフィールドに日付を割り当てますsave()メソッドを呼び出してドキュメントを挿入
$concert = new Concert(); $concert->performer = 'Mitsuko Uchida'; $concert->venue = 'Carnegie Hall'; $concert->genres = ['classical']; $concert->ticketsSold = 2121; $concert->performanceDate = Carbon::create(2024, 4, 1, 20, 0, 0, 'EST'); $concert->save();
次のコード例に示すように、モデルのidメンバーにアクセスすることで、挿入されたドキュメントの_id値を検索できます。
$insertedId = $concert->id;
create() メソッド
$fillableまたは$guarded属性のいずれかを定義して一括割り当てを有効にすると、次の例に示すように、Eloent モデルcreate()メソッドを使用して 1 回の呼び出しで挿入を実行できます。
$insertResult = Concert::create([ 'performer' => 'The Rolling Stones', 'venue' => 'Soldier Field', 'genres' => [ 'rock', 'pop', 'blues' ], 'ticketsSold' => 59527, 'performanceDate' => Carbon::create(2024, 6, 30, 20, 0, 0, 'CDT'), ]);
複数のドキュメントの挿入
この例では、 insert() Eloqueent メソッドを使用して、 Concertモデルの複数のインスタンスを MongoDB ドキュメントとして挿入する方法を示します。 この一括挿入メソッドにより、アプリケーションがドキュメントを保存するために必要な呼び出しの数が減ります。
insert() メソッドが成功すると、値 true が返されます。失敗した場合は、例外がスローされます。
次の例では、1 回の呼び出しで複数のモデルを配列として insert() メソッドに渡して保存します。
$data = [ [ 'performer' => 'Brad Mehldau', 'venue' => 'Philharmonie de Paris', 'genres' => [ 'jazz', 'post-bop' ], 'ticketsSold' => 5745, 'performanceDate' => new UTCDateTime(Carbon::create(2025, 2, 12, 20, 0, 0, 'CET')), ], [ 'performer' => 'Billy Joel', 'venue' => 'Madison Square Garden', 'genres' => [ 'rock', 'soft rock', 'pop rock' ], 'ticketsSold' => 12852, 'performanceDate' => new UTCDateTime(Carbon::create(2025, 2, 12, 20, 0, 0, 'CET')), ], ]; Concert::insert($data);
注意
この例では、MongoDB\BSON\UTCDateTimeクラスの日付をラップして、 MongoDBがシリアル化できる型に変換します。これは、Lambda が一括挿入操作で属性のキャパシティーをスキップするためです。
完全に実行可能な例
次のセクションでは、Lambdasample_mflix.movies 統合を使用してドキュメントを挿入する方法を示す完全に実行可能なコード例を示します。これらの例では、Atlasサンプルデータセットの コレクションを使用します。
Tip
ドキュメントの挿入
次の Eloquent タブと Query Builder タブから選択すると、対応する各 クエリ構文の例が表示されます。
この例では、次のアクションを実行します。
MovieEloent モデルを使用して、sample_mflixデータベース内のmoviesコレクションを表しますmoviesコレクションにドキュメントを挿入します新しく挿入されたドキュメントを印刷
この例では、create() メソッドを呼び出して、次のフィールドと値を含むドキュメントを挿入します。
titleの値"Marriage Story"yearの値2019runtimeの値136
$movie = Movie::create([ 'title' => 'Marriage Story', 'year' => 2019, 'runtime' => 136, ]); echo $movie->toJson();
{ "title": "Marriage Story", "year": 2019, "runtime": 136, "updated_at": "...", "created_at": "...", "_id": "..." }
この例では、次のアクションを実行します。
DBファサードからtable()メソッドを呼び出してmoviesコレクションにアクセスしますmoviesコレクションにドキュメントを挿入します挿入操作が成功したかどうかを出力します
この例では、insert() メソッドを呼び出して、次のフィールドと値を含むドキュメントを挿入します。
titleの値"Marriage Story"yearの値2019runtimeの値136
$success = DB::table('movies') ->insert([ 'title' => 'Marriage Story', 'year' => 2019, 'runtime' => 136, ]); echo 'Insert operation success: ' . ($success ? 'yes' : 'no');
Insert operation success: yes
複数のドキュメントの挿入
次の Eloquent タブと Query Builder タブから選択すると、対応する各 クエリ構文の例が表示されます。
この例では、次のアクションを実行します。
MovieEloent モデルを使用して、sample_mflixデータベース内のmoviesコレクションを表しますmoviesコレクションにドキュメントを挿入します挿入操作が成功したかどうかを出力します
この例ではinsert() メソッドを呼び出して、2023 にリリースされた映画を表すドキュメントを挿入しています。
$success = Movie::insert([ [ 'title' => 'Anatomy of a Fall', 'release_date' => new UTCDateTime(new DateTimeImmutable('2023-08-23')), ], [ 'title' => 'The Boy and the Heron', 'release_date' => new UTCDateTime(new DateTimeImmutable('2023-12-08')), ], [ 'title' => 'Passages', 'release_date' => new UTCDateTime(new DateTimeImmutable('2023-06-28')), ], ]); echo 'Insert operation success: ' . ($success ? 'yes' : 'no');
Insert operation success: yes
この例では、次のアクションを実行します。
DBファサードからtable()メソッドを呼び出してmoviesコレクションにアクセスしますmoviesコレクションにドキュメントを挿入します挿入操作が成功したかどうかを出力します
この例ではinsert() メソッドを呼び出して、2023 にリリースされた映画を表すドキュメントを挿入しています。
$success = DB::table('movies') ->insert([ [ 'title' => 'Anatomy of a Fall', 'release_date' => new UTCDateTime(new DateTimeImmutable('2023-08-23')), ], [ 'title' => 'The Boy and the Heron', 'release_date' => new UTCDateTime(new DateTimeImmutable('2023-12-08')), ], [ 'title' => 'Passages', 'release_date' => new UTCDateTime(new DateTimeImmutable('2023-06-28')), ], ]); echo 'Insert operation success: ' . ($success ? 'yes' : 'no');
Insert operation success: yes
詳細情報
Card PHP API拡張機能の詳細については、Githubリポジトリを参照してください。