Docs Menu

ドキュメントの挿入

このガイドでは、Lambda MongoDBを使用して、LambelアプリケーションからMongoDBコレクションにドキュメントを挿入する方法を学習できます。

ドキュメントを挿入するときは、データがコレクションの一意のインデックスに違反していないことを確認してください。コレクションの最初のドキュメントを挿入するとき、または 新しいコレクションを作成する とき、 MongoDB は_idフィールドにユニークインデックスを自動的に作成します。

Lambdaスキーマビルダを使用してMongoDBコレクションにインデックスを作成する方法の詳細については、スキーマ ビルダ ドキュメントの 「インデックスの管理」セクションを参照してください。

Lalavel 統合のEloquet モデルの詳細については、「 Elastic モデル 」セクションを参照してください。

このガイドの操作は、次の Elastic モデルクラス を参照。

Concern.html
<?php
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 ドキュメントの 属性キャスティング を参照してください。

このセクションの例では、save()create() Eloqueent メソッドを使用して、Concert モデルのインスタンスをMongoDBドキュメントとして挿入する方法を示します。

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;

$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 統合を使用してドキュメントを挿入する方法を示す実行可能なコード例については、次の使用例を参照してください。

MongoDBにすでにあるデータを変更する方法については、「 ドキュメントの変更 」ガイドを参照してください。