드라이버가 포함된 MongoDB
정의
db.collection.findOne(query, projection, options)collection 또는 뷰에 지정된 쿼리 기준을 충족하는 문서 한 개를 반환합니다.
반환되는 문서는 쿼리 기준과 일치하는 문서 수 및 사용된 쿼리 계획에 따라 달라질 수 있습니다.
일치하는 문서 수쿼리 계획결과0
Any
이 메서드는 다음을 반환합니다.
null1
Any
이 메서드는 지정된 쿼리 기준을 충족하는 문서를 반환합니다.
2 이상
컬렉션 스캔
이 메서드는 기본 순서에 따라 첫 번째 문서를 반환합니다. 고정 사이즈 컬렉션에서 기본 순서는 삽입 순서와 동일합니다.
2 이상
인덱스 스캔
이 메서드는 인덱스에서 조회된 첫 번째 문서를 반환합니다.
중요
If the query plan changes to use a different index, the method may return a different document. If your use case requires that a particular record is chosen consistently, you must use the
optionsdocument to specify a sort. For details on usingfindOne()with anoptionsdocument, see the example.If you specify a
projectionparameter,findOne()returns a document that only contains theprojectionfields. The_idfield is always included unless you explicitly exclude it.참고
find()메서드와 비슷하지만findOne()은 커서가 아닌 문서를 반환합니다.
호환성
이 메서드는 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
- MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud
참고
This command is supported in all MongoDB Atlas clusters. For information on Atlas support for all commands, see Unsupported Commands.
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
db.collection.findOne() 의 형식은 다음과 같습니다.
db.collection.findOne( <query>, <projection>, <options> )
db.collection.findOne() 다음 매개변수를 사용합니다.
Parameter | 유형 | 설명 |
|---|---|---|
| 문서 | 선택 사항. 쿼리 연산자를 사용하여 쿼리 선택 기준을 지정합니다. |
| 문서 | Optional. Specifies the fields to return using projection operators. Omit this parameter to return all fields in the matching document. For details, see Projection. |
| 문서 | 선택 사항. 쿼리 에 대한 추가 옵션을 지정합니다. 이러한 옵션은 쿼리 동작과 결과 반환 방식을 수정합니다. 사용 가능한 옵션을 보려면 FindOptions를 참조하세요. |
행동
클라이언트 연결 해제
findOne() 을 발행한 클라이언트가 작업이 완료되기 전에 연결이 끊긴 경우, MongoDB는 killOp를 사용하여 findOne() 을 종료로 표시합니다.
프로젝션
중요
언어 일관성
find() 및 findAndModify() 프로젝션을 집계의 $project 단계와 일치시키는 과정의 일환으로 다음을 수행합니다.
find()및 프로젝션은 집계 표현식findAndModify()및 구문을 사용할 수 있습니다.MongoDB는 프로젝션과 관련하여 추가 제한 사항을 시행합니다. 자세한 내용은 프로젝션 제한 사항을 참조하세요.
projection 매개변수는 일치하는 문서에서 어떤 필드가 반환되는지를 결정합니다. projection 매개변수는 다음 형식의 문서를 사용합니다.
{ field1: <value>, field2: <value> ... }
프로젝션 | 설명 |
|---|---|
| 필드 포함 여부를 지정합니다. 프로젝션 값에 0이 아닌 정수를 지정하면 연산은 해당 값을 |
| 필드 제외 여부를 지정합니다. |
| |
| 배열 프로젝션 연산자( 뷰에는 사용할 수 없습니다. |
|
뷰에는 사용할 수 없습니다. |
| 프로젝션된 필드의 값을 지정합니다. 리터럴 및 집계 변수 사용을 포함한 집계 식 및 구문을 사용하면 새 필드를 프로젝션하거나 기존 필드를 새 값으로 프로젝션할 수 있습니다.
|
참고
You can specify projection in two ways for find() and findOne():
projection매개변수 설정options매개변수를projection(으)로 설정
두 매개변수를 모두 지정하면 projection 매개변수가 우선합니다. options.projection를 사용하려면 projection 매개변수를 null 또는 undefined로 설정하다 .
임베디드 필드 지정
내장된 문서의 필드에 대해서는 다음 둘 중 하나를 사용하여 필드를 지정할 수 있습니다.
점 표기법(예시:
"field.nestedfield": <value>중첩된 양식, 예를 들어
{ field: { nestedfield: <value> } }
_id 필드 프로젝션
필드를 표시하지 않기 위해 프로젝션에서 _id: 0을 명시적으로 지정하지 않는 한 _id 필드는 기본적으로 반환된 문서에 포함됩니다.
포함 또는 제외
projection 필드는 포함과 제외 사양을 모두 포함할 수 없습니다. 단, _id 필드는 예외입니다.
필드를 명시적으로 포함하는 프로젝션에서
_id필드는 명시적으로 제외할 수 있는 유일한 필드입니다.필드를 명시적으로 제외하는 프로젝션에서는
_id필드가 명시적으로 포함할 수 있는 유일한 필드이지만,_id필드는 기본적으로 포함됩니다.
예시
이 페이지의 예시는 sample_mflix 데이터 세트의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB 배포서버에 로드하는 방법에 대한 자세한 내용은 샘플 데이터세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우, 이 페이지의 예시를 실행하려면 데이터베이스를 제거하고 다시 생성해야 할 수 있습니다.
빈 쿼리 사양 사용
다음 작업은 sample_mflix 데이터베이스 의 movies 컬렉션 에서 단일 문서 반환합니다.
db.movies.findOne()
쿼리 사양 사용
다음 작업은 movies 컬렉션에서 title 필드 문자 'T'로 시작하거나 또는 year 필드 1950 미만인 첫 번째로 일치하는 문서를 반환합니다.
db.movies.findOne( { $or: [ { title: /^T/ }, { year: { $lt: 1950 } } ] } )
프로젝션 사용
projection 매개변수는 반환할 필드를 지정합니다. 매개변수에는 포함 또는 제외 사양이 있으며 _id 필드에 대한 제외 사양이 아닌 경우 둘 다 포함되지는 않습니다.
반환할 필드 지정
다음 작업은 movies 컬렉션 에서 문서 찾아 title, genres 및 imdb 필드만 반환합니다.
db.movies.findOne( { }, { title: 1, genres: 1, imdb: 1 } )
제외된 필드 외의 모든 필드 반환
다음 작업은 movies 컬렉션 에서 cast 배열 에 "Al Pacino"가 포함된 문서 반환합니다. 프로젝션은 제외하고 _id 필드, imdb 내장된 문서의 votes 필드 및 fullplot 필드를 제외한 모든 필드를 반환합니다.
db.movies.findOne( { cast: 'Al Pacino' }, { _id: 0, 'imdb.votes': 0, fullplot: 0 } )
옵션 포함
다음 작업은 sort 옵션을 사용하여 정렬된 movies 컬렉션에서 일치하는 첫 번째 문서를 반환합니다. 이 예시에서 컬렉션은 year 기준으로 오름차순으로 정렬됩니다.
db.movies.findOne( { }, { }, { sort: { year: 1 } } )
findOne 결과 문서
단일 문서가 반환되기 때문에 커서 메서드를 findOne() 결과에 적용할 수 없습니다. 다음과 같은 방법으로 문서에 직접 액세스할 수 있습니다.
var myDocument = db.movies.findOne(); if (myDocument) { var myTitle = myDocument.title; print(myTitle); }
let 옵션에서 변수 사용
쿼리 옵션을 지정하여 쿼리 동작을 수정하고 결과가 반환되는 방식을 지정할 수 있습니다.
예를 들어 findOne 메서드의 다른 곳에서 액세스할 수 있는 변수를 정의하려면 let 옵션을 사용합니다. 변수를 사용하여 결과를 필터링하려면 $expr 연산자 내에서 변수에 액세스해야 합니다.
다음 예시 let 에서 targetTitle 변수를 정의하고 이 변수를 사용하여 "The Godfather"이라는 제목의 영화를 조회 .
db.movies.findOne( { $expr: { $eq: [ "$title", "$$targetTitle" ] } }, { _id: 0, title: 1, year: 1 }, { let : { targetTitle: "The Godfather" } } )