개요
이 가이드 에서는 새 Laravel 웹 애플리케이션 에 Laravel MongoDB 를 추가하고, MongoDB Atlas 에서 호스팅되는 MongoDB cluster 에 연결하고, 데이터에 대한 읽기 및 쓰기 (write) 작업을 수행하는 방법을 보여 줍니다.
팁
Laravel 없이 MongoDB PHP 라이브러리를 사용하여 MongoDB에 연결하려는 경우, MongoDB PHP 라이브러리 문서에서 MongoDB 에 연결 을 참조하세요.
Laravel 통합은 Laravel Eloquent 및 쿼리 빌더 구문을 확장하여 MongoDB 에서 데이터를 저장 하고 조회 합니다.
MongoDB Atlas는 관리형 클라우드 데이터베이스 서비스로, MongoDB deployment를 호스팅합니다. 이 가이드의 단계에 따라 자체 무료(신용카드 필요 없음) MongoDB Atlas 배포서버를 생성할 수 있습니다.
팁
Laravel-quickstart Github 리포지토리 복제하여 전체 웹 애플리케이션 프로젝트 다운로드 할 수 있습니다.
전제 조건
시작하기 애플리케이션 만들려면 개발 환경에 다음 소프트웨어가 설치되어 있어야 합니다.
터미널 앱과 셸입니다. MacOS 사용자의 경우 터미널 또는 유사한 앱을 사용하세요. Windows 사용자의 경우 PowerShell을 사용하세요.
다운로드 및 설치
다음 단계를 완료하여 Laravel 통합 종속성을 설치하고 Laravel 웹 애플리케이션 에 추가합니다.
팁
다음 설치 단계의 대안으로 Laravel Herd를 사용하여 MongoDB 설치하고 Laravel MongoDB 위한 개발 환경을 구성할 수 있습니다. MongoDB와 함께 Laravel Herd를 사용하는 방법에 대한 자세한 내용은 Herd 문서에서 Herd Pro를 통해 MongoDB 설치하기 를 참조하세요.
MongoDB PHP 확장 설치
Laravel MongoDB MongoDB 연결 및 명령을 관리 하려면 MongoDB PHP 확장이 필요합니다. MongoDB PHP 확장 프로그램을 설치하는 방법을 학습 PHP 라이브러리 시작하기 가이드 의 MongoDB PHP 확장 프로그램 설치 단계를 참조하세요.
Laravel 설치
설치하는 Laravel 버전이 Laravel 통합 버전과 호환되는지 확인합니다. 호환되는 버전을 학습 호환성 페이지를 참조하세요.
다음 명령을 실행하여 Laravel을 설치합니다:
composer global require laravel/installer
설치가 완료되면 명령은 다음 메시지를 출력합니다.
Using version ^<version number> for laravel/installer
Laravel 애플리케이션 만들기
다음 명령을 실행하여 my-app 이라는 새 Laravel 웹 애플리케이션을 생성합니다.
laravel new my-app
설치가 완료되면 명령은 다음 메시지를 출력합니다.
INFO Application ready in [my-app]. You can start your local development using: ➜ cd my-app ➜ php artisan serve New to Laravel? Check out our bootcamp and documentation. Build something amazing!
MongoDB Deployment 생성
Atlas에서 무료 MongoDB 배포서버 생성
MongoDB 시작하기 가이드 완료하여 새 Atlas 계정을 설정하다 하고 샘플 데이터를 새 무료 계층 MongoDB deployment 에 로드합니다. Cloud Deployment 탭의 지침에 따라 cloud 에서 MongoDB Atlas 배포서버 만듭니다.
이 단계를 완료하면 Atlas에 대한 새로운 프리 티어 MongoDB 배포, 데이터베이스 사용자 자격 증명 및 샘플 데이터가 데이터베이스에 로드됩니다.
연결 문자열 만들기
연결 문자열이라고도 하는 연결 URI을 제공하여 MongoDB 배포서버에 연결할 수 있으며, 이 연결 문자열은 드라이버에 MongoDB 배포서버로 연결하는 방법과 연결된 동안 동작하는 방법을 지시합니다.
연결 문자열에는 배포서버의 호스트 이름 또는 IP 주소와 포트, 인증 메커니즘, 해당되는 경우 사용자 자격 증명, 연결 옵션 등이 포함됩니다.
Atlas 에서 호스팅되지 않는 인스턴스 또는 배포서버 에 연결하려면 서버 매뉴얼의 연결 문자열 을 참조하세요.
MongoDB Atlas 연결 문자열 찾습니다.
이전 단계에서 만든 배포서버에 대한 연결 문자열 조회 하려면 Atlas 계정에 로그인 하고 Database 섹션 아래의 Clusters 페이지로 이동합니다. 새 배포서버 의 Connect 버튼을 클릭합니다.

아직 데이터베이스 사용자를 구성하지 않은 경우 MongoDB 새 사용자를 생성하고 구성하라는 메시지를 표시합니다.
Connect to your application 아래의 Drivers 버튼을 클릭하고 Driver 선택 메뉴에서 "PHP"를 선택하고, Version 선택 메뉴에서 설치한 버전과 가장 일치하는 버전을 선택합니다.
연결 문자열 만 보려면 View full code sample 옵션의 선택을 취소합니다.
이 단계를 완료하면 데이터베이스 사용자 이름과 비밀번호가 포함된 연결 문자열이 생성됩니다.
MongoDB 연결 구성
애플리케이션 환경 변수 파일 구성
다음 shell 명령을 실행하여 .env.example 파일을 프로젝트 루트 디렉토리의 .env 파일에 복사합니다.
cp .env.example .env
파일 열고 다음 변수 및 값을 추가하거나 편집합니다..env <connection string> 자리 표시자를 연결 문자열 만들기 단계의 연결 문자열 로 바꿉니다.
DB_CONNECTION=mongodb DB_URI="<connection string>"
예를 들어 연결 string 이 "mongodb+srv://myUser:myPass123@mongo0.example.com/"인 경우 DB_URI 변수는 다음 줄과 일치합니다.
DB_URI="mongodb+srv://myUser:myPass123@mongo0.example.com/"
참고
.env 파일의 이러한 변수가 애플리케이션을 실행하는 shell 에서 정의되지 않았는지 확인합니다. shell 의 환경 변수는 .env 파일의 환경 변수보다 우선합니다.
데이터베이스 구성에서 연결 문자열 설정
config 디렉토리에서 database.php 파일을 열고 다음 줄에 표시된 대로 기본 데이터베이스 연결을 DB_CONNECTION 환경 변수로 설정합니다.
'default' => env('DB_CONNECTION'),
동일한 파일의 connections 배열에 강조 표시된 다음 mongodb 항목을 추가합니다.
'connections' => [ 'mongodb' => [ 'driver' => 'mongodb', 'dsn' => env('DB_URI'), 'database' => 'sample_mflix', ], ], // ...
Laravel 통합 제공자 추가
bootstrap 디렉토리에서 providers.php 파일을 열고 배열에 다음 항목을 추가합니다.
MongoDB\Laravel\MongoDBServiceProvider::class,
팁
Laravel 10.x에 제공자 등록하는 방법을 학습 제공자 등록을참조하세요.
이 단계를 완료하면 Laravel 웹 애플리케이션을 MongoDB에 연결할 준비가 된 것입니다.
MongoDB 데이터 보기
Laravel 통합을 사용하도록 모델 편집
app/Models 디렉토리에서 Movie.php 모델을 열고 다음과 같이 편집합니다.
Illuminate\Database\Eloquent\Model가져오기를MongoDB\Laravel\Eloquent\Model으)로 바꿉니다.$connection필드에"mongodb"를 지정합니다.
편집한 Movie.php 파일에는 다음 코드가 포함되어 있습니다.
namespace App\Models; use MongoDB\Laravel\Eloquent\Model; class Movie extends Model { protected $connection = 'mongodb'; }
컨트롤러 기능 추가
app/Http/Controllers 디렉토리에서 MovieController.php 파일을 엽니다. 데이터베이스 쿼리와 일치하는 결과를 검색하고 뷰에 렌더링하려면 show() 함수를 다음 코드로 바꿉니다.
public function show() { return view('browse_movies', [ 'movies' => Movie::where('runtime', '<', 60) ->where('imdb.rating', '>', 8.5) ->orderBy('imdb.rating', 'desc') ->take(10) ->get() ]); }
뷰 생성
애플리케이션 루트 디렉토리에서 다음 명령을 실행하여 영화 데이터를 표시하는 뷰를 만듭니다.
php artisan make:view browse_movies
명령을 실행하면 다음 메시지가 출력됩니다.
INFO View [resources/views/browse_movies.blade.php] created successfully.
resources/views 디렉토리에서 browse_movies.blade.php 뷰 파일을 엽니다. 내용을 다음 코드로 바꾸고 변경 사항을 저장합니다.
<!DOCTYPE html> <html> <head> <title>Browse Movies</title> </head> <body> <h2>Movies</h2> @forelse ($movies as $movie) <p> Title: {{ $movie->title }}<br> Year: {{ $movie->year }}<br> Runtime: {{ $movie->runtime }}<br> IMDB Rating: {{ $movie->imdb['rating'] }}<br> IMDB Votes: {{ $movie->imdb['votes'] }}<br> Plot: {{ $movie->plot }}<br> </p> @empty <p>No results</p> @endforelse </body> </html>
선택적으로 결과를 JSON 문서로 볼 수 있습니다.
뷰를 생성하고 browse_movies.blade.php 파일을 편집하는 대신 toJson() 메서드를 사용하여 결과를 JSON 형식으로 표시할 수 있습니다.
show() 함수를 다음 코드로 대체하여 결과를 조회 하고 JSON 문서로 반환합니다.
public function show() { $results = Movie::where('runtime', '<', 60) ->where('imdb.rating', '>', 8.5) ->orderBy('imdb.rating', 'desc') ->take(10) ->get(); return $results->toJson(); }
영화 데이터 보기
웹 브라우저에서 http://: /browse_movies127.0.0.18000 URL 을 엽니다. 이 페이지에는 영화 목록과 각 영화에 대한 세부 정보가 표시됩니다.
팁
애플리케이션 루트 디렉토리에서 php artisan route:list 명령을 실행하여 사용 가능한 경로 목록을 볼 수 있습니다.
MongoDB에 데이터 쓰기
컨트롤러 함수를 호출하는 API 경로 추가
다음 명령을 실행 하여 API 경로 파일 을 생성합니다.
php artisan install:api
팁
Laravel 10.x를 사용하는 경우 명령이 생성하는 파일이 이미 존재하므로 이 단계를 건너뛰세요.
컨트롤러를 가져오고 routes/api.php 파일에서 store() 메서드를 호출하는 API 경로를 추가합니다.
use App\Http\Controllers\MovieController; // ... Route::resource('movies', MovieController::class)->only([ 'store' ]);
API에 요청 게시
movie.json 파일을 만들고 다음 데이터를 삽입합니다.
{ "title": "The Laravel MongoDB Quick Start", "year": 2024, "runtime": 15, "imdb": { "rating": 9.5, "votes": 1 }, "plot": "This movie entry was created by running through the Laravel MongoDB Quick Start tutorial." }
shell에서 다음 명령을 실행하여 JSON 페이로드를 엔드포인트에 POST 요청으로 보냅니다.
curl -H "Content-Type: application/json" \ --data @movie.json \ http://localhost:8000/api/movies
데이터 보기
웹 브라우저에서 http://: /browse_movies를 열어 제출한 영화 정보를127.0.0.1 확인합니다. 삽입된 동영상이 결과 상단에 나타납니다.8000
다음 단계
시작하기 가이드 완료한 것을 축하합니다!
이 단계를 완료하면 Laravel MongoDB 를 사용하여 MongoDB deployment 에 연결하고, 샘플 데이터에 대해 쿼리 를 실행 하고, 검색된 결과를 렌더링하는 Laravel 웹 애플리케이션 을 갖게 됩니다.
Laravel-quickstart Github 리포지토리 복제하여 웹 애플리케이션 프로젝트 다운로드 할 수 있습니다.
팁
Tutorials
Laravel MongoDB MongoDB 사용하여 백엔드 서비스 빌드 튜토리얼을 따라 Laravel MongoDB 애플리케이션 에서 더 많은 CRUD 기능을 구현 방법을 알아보세요.
유투브 (Youtube) 의 Laravel 및 MongoDB 를 사용한 전체 스택 인스타그램 복제 튜토리얼 을 따라 Laravel MongoDB 사용하는 전체 스택 애플리케이션 빌드 방법을 알아보세요.
추가 학습
다음 리소스에서 Laravel MongoDB 기능에 대해 자세히 알아보세요.
Connect to MongoDB: MongoDB 연결을 구성하는 방법을 학습 .
데이터 모델링: Eloquent 모델 클래스를 사용하여 MongoDB 데이터로 작업하세요.
쿼리 빌더: 쿼리 빌더를 사용하여 MongoDB 쿼리 및 애그리게이션을 지정합니다.
참고
이 페이지에서 문제가 실행 하면 이 페이지의 오른쪽 또는 오른쪽 하단에 있는 Rate this page 탭 사용하여 피드백 제출 .
일반적인 질문에 대한 지원은 MongoDB Stack Overflow 태그 또는 MongoDB Reddit Community를 사용하여 찾을 수 있습니다.
