ドキュメントの挿入
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']; }
Tip
$fillable
属性を使用すると、挿入操作に Lambda の一括割り当てを使用できます。 一括割り当ての詳細については、 Elastic モデル クラス ドキュメントの「 一括割り当てのカスタマイズ」を参照してください。
$casts
属性は、属性を一般的なデータ型に変換するように Lambel に指示します。詳しくは、Lambda ドキュメントの 属性キャスティング を参照してください。
1つのドキュメントの挿入
このセクションの例では、save()
と create()
Eloqueent メソッドを使用して、Concert
モデルのインスタンスをMongoDBドキュメントとして挿入する方法を示します。
Save() メソッド
save()
メソッドが成功すると、 メソッドを呼び出したモデル インスタンスにアクセスできるようになります。
操作が失敗した場合、モデル インスタンスにはnull
が割り当てられます。
このサンプル コードでは、次のアクションが実行されます。
Concert
モデルの新しいインスタンスを作成しますフィールドと フィールドに string 値を割り当てます
performer
venue
文字列の配列を
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'), ]);
PHPAPIを し て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 がシリアル化できるタイプに変換する
詳細情報
Lalavel 統合を使用してドキュメントを挿入する方法を示す実行可能なコード例については、次の使用例を参照してください。