AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

ドキュメントの挿入

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

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

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

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

このガイドの操作は、次の 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'),
]);

この例では、 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

独自の Lambdaアプリケーションまたは スタートガイド で作成されたmy-app アプリケーションから完全な例を実行できます。例では、このチュートリアルで作成されたMovie.php モデルクラスを使用して、movies MongoDBコレクションの操作を示します。操作を実行するには、サンプルコードを Lambdaアプリケーションの コントローラー エンドポイントにコピーします。

操作の期待される出力を表示するには、コントローラー関数を呼び出し、その結果をウェブ インターフェイスに返すウェブ ルートをアプリケーションに追加します。

次の Eloquent タブと Query Builder タブから選択すると、対応する各 クエリ構文の例が表示されます。

この例では、次のアクションを実行します。

  • Movie Eloent モデルを使用して、 sample_mflixデータベース内のmoviesコレクションを表します

  • moviesコレクションにドキュメントを挿入します

  • 新しく挿入されたドキュメントを印刷

この例では、create() メソッドを呼び出して、次のフィールドと値を含むドキュメントを挿入します。

  • title の値 "Marriage Story"

  • year の値 2019

  • runtime の値 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 の値 2019

  • runtime の値 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 タブから選択すると、対応する各 クエリ構文の例が表示されます。

この例では、次のアクションを実行します。

  • Movie Eloent モデルを使用して、 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リポジトリを参照してください。

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