AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

db. 컬렉션.findOne() (mongosh 메서드)

드라이버가 포함된 MongoDB

이 페이지에서는 mongosh 메서드에 대해 설명합니다. MongoDB 드라이버에서 동일한 메서드를 보려면, 해당 프로그래밍 언어의 해당 페이지를 참조하세요.
db.collection.findOne(query, projection, options)

collection 또는 뷰에 지정된 쿼리 기준을 충족하는 문서 한 개를 반환합니다.

반환되는 문서는 쿼리 기준과 일치하는 문서 수 및 사용된 쿼리 계획에 따라 달라질 수 있습니다.

일치하는 문서 수
쿼리 계획
결과

0

Any

이 메서드는 다음을 반환합니다. null

1

Any

이 메서드는 지정된 쿼리 기준을 충족하는 문서를 반환합니다.

2 이상

컬렉션 스캔

이 메서드는 기본 순서에 따라 첫 번째 문서를 반환합니다. 고정 사이즈 컬렉션에서 기본 순서는 삽입 순서와 동일합니다.

2 이상

인덱스 스캔

이 메서드는 인덱스에서 조회된 첫 번째 문서를 반환합니다.

중요

다른 인덱스 사용하도록 쿼리 계획 변경되면 메서드는 다른 문서 반환할 수 있습니다. 사용 사례 에서 특정 기록 일관되게 선택해야 하는 경우 options 문서 사용하여 정렬을 지정해야 합니다. options 문서 에서 findOne()을 사용하는 방법에 대한 자세한 내용은 예시 를 참조하세요.

projection 매개변수를 지정하면findOne()는 projection 필드만 포함된 문서 반환합니다. _id 필드 명시적으로 제외하지 않는 한 항상 포함됩니다.

참고

find() 메서드와 비슷하지만 findOne() 은 커서가 아닌 문서를 반환합니다.

이 메서드는 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.

  • MongoDB Atlas: cloud 에서의 MongoDB 배포를 위한 완전 managed 서비스

참고

이 명령은 모든 MongoDB Atlas 클러스터에서 지원됩니다. 모든 명령에 대한 Atlas 지원 에 대한 자세한 내용은 지원되지 않는 명령을 참조하세요.

db.collection.findOne() 의 형식은 다음과 같습니다.

db.collection.findOne( <query>, <projection>, <options> )

db.collection.findOne() 다음 매개변수를 사용합니다.

Parameter
유형
설명

query

문서

선택 사항. 쿼리 연산자를 사용하여 쿼리 선택 기준을 지정합니다.

projection

문서

선택 사항. 프로젝션 연산자를 사용하여 반환할 필드를 지정합니다. 일치하는 문서 의 모든 필드를 반환하려면 이 매개변수를 생략합니다. 자세한 내용은 프로젝션을 참조하세요.

options

문서

선택 사항. 쿼리 에 대한 추가 옵션을 지정합니다. 이러한 옵션은 쿼리 동작과 결과 반환 방식을 수정합니다. 사용 가능한 옵션을 보려면 FindOptions를 참조하세요.

findOne() 을 발행한 클라이언트가 작업이 완료되기 전에 연결이 끊긴 경우, MongoDB는 killOp를 사용하여 findOne() 을 종료로 표시합니다.

중요

언어 일관성

find() 및 findAndModify() 프로젝션을 집계의 $project 단계와 일치시키는 과정의 일환으로 다음을 수행합니다.

projection 매개변수는 일치하는 문서에서 어떤 필드가 반환되는지를 결정합니다. projection 매개변수는 다음 형식의 문서를 사용합니다.

{ field1: <value>, field2: <value> ... }
프로젝션
설명

<field>: <1 or true>

필드 포함 여부를 지정합니다. 프로젝션 값에 0이 아닌 정수를 지정하면 연산은 해당 값을 true로 취급합니다.

<field>: <0 or false>

필드 제외 여부를 지정합니다.

"<field>.$": <1 or true>

$ 배열 프로젝션 연산자를 사용하여 배열 필드의 쿼리 조건과 일치하는 첫 번째 요소를 반환합니다. 프로젝션 값에 대해 0이 아닌 정수를 지정하면 연산은 값을 true로 처리합니다.

뷰에는 사용할 수 없습니다.

<field>: <array projection>

배열 프로젝션 연산자($elemMatch, $slice)를 사용하여 포함할 배열 요소를 지정합니다.

뷰에는 사용할 수 없습니다.

<field>: <$meta expression>

$meta 연산자 표현식을 사용하여 사용 가능한per-document metadata를 포함하도록 지정합니다.

뷰에는 사용할 수 없습니다.

<field>: <aggregation expression>

프로젝션된 필드의 값을 지정합니다.

리터럴 및 집계 변수 사용을 포함한 집계 식 및 구문을 사용하면 새 필드를 프로젝션하거나 기존 필드를 새 값으로 프로젝션할 수 있습니다.

  • 프로젝션 값에 숫자가 아니면서 부울이 아닌 리터럴(예시: 리터럴 문자열, 배열 또는 연산자 표현식)을 지정하면 필드가 새 값으로 프로젝션됩니다.

    • { field: [ 1, 2, 3, "$someExistingField" ] }

    • { field: "New String Value" }

    • { field: { status: "Active", total: { $sum: "$existingArray" } } }

  • 필드의 리터럴 값을 프로젝션하려면 $literal 집계 표현식을 사용합니다. 예는 다음과 같습니다.

    • { field: { $literal: 5 } }

    • { field: { $literal: true } }

    • { field: { $literal: { fieldWithValue0: 0, fieldWithValue1: 1 } } }

참고

find() 및 findOne()에 대해 두 가지 방법으로 프로젝션 지정할 수 있습니다.

  • projection 매개변수 설정

  • options 매개변수를 projection(으)로 설정

두 매개변수를 모두 지정하면 projection 매개변수가 우선합니다. options.projection를 사용하려면 projection 매개변수를 null 또는 undefined로 설정하다 .

내장된 문서의 필드에 대해서는 다음 둘 중 하나를 사용하여 필드를 지정할 수 있습니다.

  • 점 표기법(예시: "field.nestedfield": <value>

  • 중첩된 양식, 예를 들어 { field: { nestedfield: <value> } }

필드를 표시하지 않기 위해 프로젝션에서 _id: 0을 명시적으로 지정하지 않는 한 _id 필드는 기본적으로 반환된 문서에 포함됩니다.

projection 필드는 포함과 제외 사양을 모두 포함할 수 없습니다. 단, _id 필드는 예외입니다.

  • 필드를 명시적으로 포함하는 프로젝션에서 _id 필드는 명시적으로 제외할 수 있는 유일한 필드입니다.

  • 필드를 명시적으로 제외하는 프로젝션에서는 _id 필드가 명시적으로 포함할 수 있는 유일한 필드이지만, _id 필드는 기본적으로 포함됩니다.

이 페이지의 예제에서는 sample_mflix 데이터 세트의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB deployment 에 로드하는 방법에 대한 자세한 내용은 샘플 데이터 세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우 이 페이지의 예제를 실행 하려면 데이터베이스를 삭제하고 다시 만들어야 할 수 있습니다.

다음 작업은 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() 결과에 적용할 수 없습니다. 다음과 같은 방법으로 문서에 직접 액세스할 수 있습니다.

var myDocument = db.movies.findOne();
if (myDocument) {
var myTitle = myDocument.title;
print(myTitle);
}

쿼리 옵션을 지정하여 쿼리 동작을 수정하고 결과가 반환되는 방식을 지정할 수 있습니다.

예를 들어 findOne 메서드의 다른 곳에서 액세스할 수 있는 변수를 정의하려면 let 옵션을 사용합니다. 변수를 사용하여 결과를 필터링하려면 $expr 연산자 내에서 변수에 액세스해야 합니다.

다음 예시 let 에서 targetTitle 변수를 정의하고 이 변수를 사용하여 "The Godfather"이라는 제목의 영화를 조회 .

db.movies.findOne(
{ $expr: { $eq: [ "$title", "$$targetTitle" ] } },
{ _id: 0, title: 1, year: 1 },
{ let : { targetTitle: "The Godfather" } }
)
이 페이지 평가하기

이 페이지의 내용