Overview
このガイドでは、Lambda MongoDBを使用して、LambelアプリケーションからMongoDBコレクションにドキュメントを挿入する方法を学習できます。
ドキュメントを挿入するときは、データがコレクションの一意のインデックスに違反していないことを確認してください。コレクションの最初のドキュメントを挿入するとき、または 新しいコレクションを作成する とき、 MongoDB は_idフィールドにユニークインデックスを自動的に作成します。
Lambdaスキーマビルダを使用してMongoDBコレクションにインデックスを作成する方法の詳細については、スキーマ ビルダ ドキュメントの 「インデックスの管理」セクションを参照してください。
Lalavel 統合のEloquet モデルの詳細については、「 Elastic モデル 」セクションを参照してください。
サンプル モデル
このガイドの操作は、次の 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']; }
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'), ]);
Card PHP API拡張機能の詳細については、Githubリポジトリを参照してください。
複数のドキュメントの挿入
この例では、 insert() Eloqueent メソッドを使用して、 Concertモデルの複数のインスタンスを MongoDB ドキュメントとして挿入する方法を示します。 この一括挿入メソッドにより、アプリケーションがドキュメントを保存するために必要な呼び出しの数が減ります。
insert() メソッドが成功すると、値 1 が返されます。失敗した場合は、例外がスローされます。
次の例では、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 が一括挿入操作で属性のキャパシティーをスキップするためです。
詳細情報
Lalavel 統合を使用してドキュメントを挿入する方法を示す実行可能なコード例については、次の使用例を参照してください。
MongoDBにすでにあるデータを変更する方法については、「ドキュメントの変更」ガイドを参照してください。