Docs Menu

문서 삽입

이 가이드 에서는 Laravel MongoDB 사용하여 Laravel 애플리케이션 에서 MongoDB 컬렉션에 문서를 삽입하는 방법을 학습 수 있습니다.

문서를 삽입할 때 데이터가 컬렉션 의 고유 인덱스를 위반하지 않는지 확인하세요. 컬렉션 의 첫 번째 문서 삽입하거나 새 컬렉션 만들 때 MongoDB _id 필드 에 고유 인덱스 자동으로 생성합니다.

Laravel 스키마 빌더를 사용하여 MongoDB 컬렉션에서 인덱스를 만드는 방법에 대한 자세한 내용은 스키마 빌더 설명서의 인덱스 관리 섹션을 참조하세요.

Laravel 통합의 Eloquent 모델에 학습 보려면 Eloquent 모델 섹션을 참조하세요.

이 가이드 의 작업은 다음 Eloquent 모델 클래스를 참조합니다:

Concert.php
<?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'];
}

$fillable 속성을 사용하면 삽입 작업에 Laravel 대량 할당을 사용할 수 있습니다. 대량 할당에 학습 보려면 Eloquent 모델 클래스 문서에서 대량 할당 사용자 지정 을 참조하세요.

속성은 $casts 속성을 일반적인 데이터 유형으로 변환하도록 Laravel에 지시합니다. 자세히 학습 Laravel 문서에서 속성캐스팅 을 참조하세요.

이 섹션의 예제에서는 save()create() Eloquent 메서드를 사용하여 Concert 모델의 인스턴스 MongoDB 문서 로 삽입하는 방법을 보여 줍니다.

save() 메서드가 성공하면 메서드를 호출한 모델 인스턴스 에 액세스 할 수 있습니다.

작업이 실패하면 모델 인스턴스 에 null 이 할당됩니다.

이 예제 코드는 다음 작업을 수행합니다.

  • Concert 모델의 새 인스턴스를 만듭니다.

  • performervenue 필드에 string 값을 할당합니다.

  • 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 속성을 정의하여 대량 할당을 활성화하는 경우, 다음 예와 같이 Eloquent 모델 create() 메서드를 사용하여 한 번의 호출로 삽입을 수행할 수 있습니다.

$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'),
]);

Carbon PHP API 확장에 대해 자세히 알아보려면 다음을 Github 참조하세요. 리포지토리.

이 예시 에서는 insert() Eloquent 메서드를 사용하여 Concert 모델의 여러 인스턴스를 MongoDB 문서로 삽입하는 방법을 보여 줍니다. 이 대량 삽입 메서드를 사용하면 애플리케이션 에서 문서를 저장하기 위해 수행해야 하는 호출 횟수를 줄일 수 있습니다.

insert() 메서드가 성공하면 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 Laravel이 대량 삽입 작업에서 속성 캐스팅을 건너뛰기 때문에 MongoDB가 직렬화할 수 있는 유형으로 변환합니다.

Laravel 통합을 사용하여 문서를 삽입하는 방법을 보여주는 실행 가능한 코드 예제를 보려면 다음 사용 예제를 참조하세요.

이미 MongoDB 에 있는 데이터를 수정하는 방법을 학습 문서 수정 가이드 참조하세요.