Retrieve Data
개요
이 가이드 에서는 Laravel MongoDB 사용하여 MongoDB 컬렉션에서 데이터를 조회 방법을 학습 수 있습니다. 이 가이드 데이터를 조회 데 사용할 수 있는 Eloquent 모델 메서드를 설명하고 다양한 유형의 찾기 작업에 대한 예를 제공합니다.
Laravel 통합의 Eloquent 모델에 학습 보려면 Eloquent 모델 섹션을 참조하세요.
시작하기 전에
이 가이드의 코드 예제를 실행하려면 빠른 시작 튜토리얼을 완료하세요. 이 튜토리얼에서는 샘플 데이터를 사용하여 MongoDB Atlas 인스턴스를 설정하고 Laravel 웹 애플리케이션에서 다음 파일을 만드는 방법에 대한 지침을 제공합니다.
Movie.php
파일에는movies
collection의 문서를 나타내는Movie
모델이 포함되어 있습니다.데이터베이스 작업을 실행하는
show()
함수가 포함된MovieController.php
파일데이터베이스 작업 결과를 표시하는 HTML 코드가 포함된
browse_movies.blade.php
파일
다음 섹션에서는 Laravel 애플리케이션에서 파일을 편집하여 찾기 작업 코드 예제를 실행하고 예상 출력을 보는 방법을 설명합니다.
쿼리와 일치하는 문서 조회
라라벨의 Eloquent 객체 관계형 매퍼(ORM)를 사용하여 MongoDB 컬렉션을 나타내는 모델을 만들고 모델에 메서드를 연결하여 쿼리 기준을 지정할 수 있습니다.
설정하다 에 일치하는 문서를 조회하려면 컬렉션의 해당 조회 모델에서 where()
메서드를 호출한 다음 메서드에 쿼리 필터하다 를 전달합니다.
팁
Retrieve One Document
where()
메서드는 일치하는 모든 문서를 검색합니다. 일치하는 첫 번째 문서 조회 하려면 first()
메서드를 체인으로 연결할 수 있습니다. 자세한 학습 과 예시 를 보려면 이 가이드 의 첫 번째 결과 조회 섹션을 참조하세요.
쿼리 필터는 필드 값 요구 사항을 지정하고 이러한 요구 사항을 충족하는 문서만 반환하도록 찾기 작업에 지시합니다.
다음 where()
메서드 호출 중 하나를 사용하여 쿼리를 작성할 수 있습니다.
where('<field name>', <value>)
은 대상 필드 에 지정된 값이 정확히 포함된 문서와 일치하는 쿼리 를 빌드합니다.where('<field name>', '<comparison operator>', <value>)
은 대상 필드의 값이 비교 기준을 충족하는 문서와 일치하는 쿼리 를 빌드합니다.
찾기 작업에 여러 기준 세트를 적용하려면 일련의 where()
메서드를 함께 연결할 수 있습니다.
where()
메서드를 사용하여 쿼리 를 작성한 후 get()
메서드를 연결하여 쿼리 결과를 조회 합니다.
이 예시에서는 Movie
Eloquent 모델에서 두 개의 where()
메서드를 호출하여 다음 기준을 충족하는 문서를 조회합니다.
year
필드의 값은2010
입니다.imdb.rating
중첩 필드에8.5
보다 큰 값이 있습니다.
쿼리를 지정하려면 다음 구문을 사용합니다.
$movies = Movie::where('year', 2010) ->where('imdb.rating', '>', 8.5) ->get();
browse_movies
뷰에서 쿼리 결과를 보려면 MovieController.php
파일 에서 show()
함수를 다음 코드와 유사하게 편집합니다.
class MovieController { public function show() { $movies = Movie::where('year', 2010) ->where('imdb.rating', '>', 8.5) ->get(); return view('browse_movies', [ 'movies' => $movies ]); } }
Title: Inception Year: 2010 Runtime: 148 IMDB Rating: 8.8 IMDB Votes: 1294646 Plot: A thief who steals corporate secrets through use of dream-sharing technology is given the inverse task of planting an idea into the mind of a CEO. Title: Senna Year: 2010 Runtime: 106 IMDB Rating: 8.6 IMDB Votes: 41904 Plot: A documentary on Brazilian Formula One racing driver Ayrton Senna, who won the F1 world championship three times before his death at age 34.
Eloquent ORM 대신 Laravel 쿼리 빌더를 사용하여 쿼리하는 방법을 알아보려면 쿼리 빌더 페이지를 참조하세요.
배열 필드 요소 일치
문서를 검색할 때 배열 필드 요소와 일치하도록 쿼리 필터하다 를 지정할 수 있습니다. 문서에 배열 필드 가 포함된 경우 값에 지정된 배열 요소가 전부 또는 일부 포함되어 있는지 여부에 따라 문서를 일치시킬 수 있습니다.
다음 where()
메서드 호출 중 하나를 사용하여 배열 필드 에 대한 쿼리 를 빌드 수 있습니다.
where('<array field>', <array>)
은 배열 필드 값이 정확히 지정된 배열 인 문서와 일치하는 쿼리 를 빌드합니다.where('<array field>', 'in', <array>)
은 배열 필드 값에 지정된 배열 요소가 하나 이상 포함된 문서와 일치하는 쿼리 를 빌드합니다.
where()
메서드를 사용하여 쿼리 를 작성한 후 get()
메서드를 연결하여 쿼리 결과를 조회 합니다.
다음 Exact Array Match 및 Element Match 탭에서 선택하여 각 패턴 에 대한 쿼리 구문을 확인합니다.
이 예시 에서는 countries
배열 이 정확히 ['Indonesia', 'Canada']
인 문서를 검색합니다.
$movies = Movie::where('countries', ['Indonesia', 'Canada']) ->get();
이 예시 에서는 countries
배열 에 ['Canada', 'Egypt']
배열 의 값 중 하나가 포함된 문서를 조회합니다.
$movies = Movie::where('countries', 'in', ['Canada', 'Egypt']) ->get();
Eloquent ORM 대신 Laravel 쿼리 빌더를 사용하여 배열 필드를 쿼리 하는 방법을 학습 보려면 쿼리 빌더 가이드 의 배열 요소 일치 예제 섹션을 참조하세요.
첫 번째 결과 조회
기준에 일치하는 첫 번째 문서를 조회하려면 where()
메서드를 사용한 후 first()
메서드를 사용합니다.
고유한 값에 대해 쿼리할 때 일관된 결과를 얻으려면 orderBy()
메서드를 first()
에 연결합니다. orderBy()
메서드를 생략하는 경우 MongoDB는 문서의 저장 순서 또는 collection에 표시되는 순서에 따라 일치하는 문서를 반환합니다.
이 예제에서는 runtime
필드의 값이 30
인 문서를 쿼리하고 _id
필드의 값에 따라 첫 번째로 일치하는 문서를 반환합니다.
쿼리를 지정하려면 다음 구문을 사용합니다.
$movie = Movie::where('runtime', 30) ->orderBy('_id') ->first();
browse_movies
뷰에서 쿼리 결과를 보려면 MovieController.php
파일 에서 show()
함수를 다음 코드와 유사하게 편집합니다.
class MovieController { public function show() { $movie = Movie::where('runtime', 30) ->orderBy('_id') ->first(); return view('browse_movies', [ 'movies' => $movie ]); } }
Title: Statues also Die Year: 1953 Runtime: 30 IMDB Rating: 7.6 IMDB Votes: 620 Plot: A documentary of black art.
팁
메서드에 orderBy()
대해 자세히 학습 쿼리 결과 수정 가이드 의 쿼리 결과 정렬 섹션을 참조하세요.
컬렉션의 모든 문서 조회
쿼리 필터를 생략하여 컬렉션의 모든 문서를 조회할 수 있습니다. 문서를 반환하려면 collection을 나타내는 Eloquent 모델에서 get()
메서드를 호출합니다. 또는 get()
메서드의 별칭 all()
을(를) 사용하여 동일한 작업을 수행할 수 있습니다.
다음 구문을 사용하여 모든 문서와 일치하는 찾기 작업을 실행합니다.
$movies = Movie::get();
경고
Atlas 샘플 데이터 세트의 movies
컬렉션에 다량의 데이터가 포함되어 있습니다. 이 collection의 모든 문서를 검색하고 표시하면 웹 애플리케이션 시간이 초과될 수 있습니다.
이 문제를 방지하려면 take()
메서드를 사용하여 문서 제한을 지정합니다. 에 대한 take()
자세한 내용은 쿼리 출력 수정 가이드 의 쿼리 결과 수정 섹션을 참조하세요.
추가 정보
Laravel 통합을 사용하여 찾기 작업을 수행하는 방법을 보여주는 실행 가능한 코드 예제를 보려면 다음 사용 예제를 참조하세요.
MongoDB 에 데이터를 삽입하는 방법을 학습 쓰기 작업 가이드 참조하세요.
Laravel 통합이 결과를 반환하는 방식을 수정하는 방법을 학습 쿼리 결과 수정 가이드 참조하세요.