시작하기
MongoDB는 가장 인기 있는 NoSQL 문서 지향 데이터베이스 중 하나입니다. 높은 쓰기 성능(분석이나 IoT에 최적), 고가용성(레플리카 셋에 의한 자동 페일오버), 수평 확장(샤딩), 강력한 쿼리 언어(집계·전문 검색·지리공간 쿼리)가 특징입니다. SQL 데이터베이스의 행·열 형식과 달리 MongoDB의 각 레코드는 BSON(바이너리 JSON) 형식의 문서입니다. 애플리케이션은 이 데이터를 JSON 형식으로 얻을 수 있습니다.Laravel에서 MongoDB를 사용할 때는 MongoDB 공식 팀이 관리하는
mongodb/laravel-mongodb 패키지 사용을 권장합니다. 이 패키지는 Eloquent 및 Laravel의 다양한 기능과 풍부한 통합을 제공합니다.설치
MongoDB PHP 드라이버
MongoDB에 접속하려면mongodb PHP 확장이 필요합니다. Laravel Herd나 php.new를 사용 중이라면 이미 설치되어 있습니다. 수동으로 설치하려면 PECL을 사용합니다.
MongoDB 서버 실행
MongoDB Community Server는 로컬 개발용으로 사용할 수 있습니다. Windows, macOS, Linux, Docker에서의 설치 방법은 공식 설치 가이드를 참고하세요. Docker를 사용하는 경우:laravel-mongodb 패키지 설치
Composer로mongodb/laravel-mongodb 패키지를 설치합니다.
설정
환경 변수
.env 파일에 MongoDB 접속 정보를 추가합니다.
config/database.php
config/database.php의 connections 배열에 mongodb 연결을 추가합니다.
주요 기능
Eloquent 모델
MongoDB\Laravel\Eloquent\Model을 상속받으면 일반 Eloquent 모델과 거의 같은 감각으로 MongoDB를 다룰 수 있습니다.
MongoDB는 스키마리스이므로 마이그레이션이 필요 없습니다. 문서를 저장하면 컬렉션이 자동으로 생성됩니다.
기본적인 CRUD 작업
일반 Eloquent와 동일한 API로 조작할 수 있습니다.배열·임베디드 문서
MongoDB의 강점인 배열이나 임베디드 문서를 그대로 다룰 수 있습니다.쿼리 빌더
MongoDB의 쿼리 빌더를 사용해 복잡한 쿼리를 작성할 수 있습니다. 자세한 내용은 laravel-mongodb 쿼리 빌더 문서를 참고하세요.캐시 드라이버
MongoDB 캐시 드라이버는 TTL 인덱스를 사용해 만료된 엔트리를 자동으로 삭제합니다. 자세한 내용은 캐시 드라이버 문서를 참고하세요.config/cache.php에 스토어를 추가합니다.
.env에서 캐시 드라이버를 MongoDB로 변경합니다.
큐 드라이버
MongoDB를 큐 드라이버로 사용할 수 있습니다. 자세한 내용은 큐 드라이버 문서를 참고하세요.config/queue.php에 연결을 추가합니다.
.env에서 큐 연결을 MongoDB로 변경합니다.
GridFS를 사용한 파일 저장
MongoDB의 GridFS를 사용해 파일을 저장할 수 있습니다. Flysystem용 GridFS 어댑터를 이용합니다. 자세한 내용은 GridFS 문서를 참고하세요.config/filesystems.php에 디스크를 추가합니다.
벡터 검색(Vector Search)
MongoDB Atlas Vector Search를 사용해 벡터 임베딩 기반 유사도 검색이 가능합니다. 텍스트, 이미지, 오디오 등의 데이터를 벡터화해 저장해 두고, 쿼리 벡터에 가장 가까운 문서를 조회하는 AI/머신러닝 대상 검색 기능입니다.벡터 검색은 MongoDB Atlas에서만 이용 가능합니다. 로컬 MongoDB Community Server나 자체 호스팅 환경에서는 사용할 수 없습니다. 사전에 Atlas 콘솔에서 Vector Search 인덱스를 생성해 두어야 합니다.
vectorSearch 메서드는 쿼리 빌더에서 사용할 수 있습니다.
전문 검색(Scout 엔진)
mongodb Scout 엔진을 사용해 Laravel Scout의 전문 검색 기능을 MongoDB에서 이용할 수 있습니다. 내부적으로 MongoDB Atlas Search를 사용하며, 퍼지 검색이나 와일드카드 검색도 지원합니다. 자세한 내용은 Scout 엔진 문서를 참고하세요.
MongoDB Scout 엔진도 MongoDB Atlas에서만 이용 가능합니다. Scout의 인덱스 컬렉션은 모델의 컬렉션과는 다른 별도의 컬렉션을 사용해야 합니다.
config/scout.php의 prefix 설정(기본값은 앱 이름)이 자동으로 적용됩니다..env에서 Scout 드라이버를 mongodb로 설정합니다.
Searchable 트레이트를 추가합니다.
MySQL과의 병용
Laravel에서는 MySQL과 MongoDB를 동시에 사용할 수 있습니다. 모델마다$connection 속성으로 연결을 지정합니다.
MySQL 모델과 MongoDB 모델 사이에 릴레이션을 갖게 하려면 하이브리드 릴레이션을 참고하세요.
정리
설치 체크리스트
설치 체크리스트
pecl install mongodb로 PHP 확장 설치- MongoDB 서버 실행(로컬 또는 Docker, 혹은 Atlas)
composer require mongodb/laravel-mongodb로 패키지 설치.env에MONGODB_URI와MONGODB_DATABASE설정config/database.php에mongodb연결 추가
MongoDB와 MySQL의 사용 구분
MongoDB와 MySQL의 사용 구분
기능별 사용 방법
기능별 사용 방법
다음 단계
laravel-mongodb 공식 문서
Eloquent, 쿼리 빌더, 릴레이션 등 전체 기능의 상세 레퍼런스
퀵 스타트
MongoDB와 Laravel의 기본 사용법을 빠르게 학습
데이터베이스 설정
Laravel의 데이터베이스 연결 설정 기본
Eloquent 입문
Eloquent ORM의 기본적인 사용법