AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

복합 작업

이 가이드에서는 Rust 드라이버를 사용하여 복합 연산 을 수행하는 방법을 배울 수 있습니다.

복합 작업은 읽기 및 쓰기 (write) 작업의 기능을 하나의 원자성 조치 으로 결합합니다. 읽기 작업과 쓰기 (write) 작업을 순서대로 수행하면 작업 사이에 누군가가 대상 문서 를 변경하여 예기치 않은 결과가 발생할 수 있습니다. 복합 작업을 수행할 때 MongoDB 는 작업이 완료될 때까지 수정 중인 문서 에 쓰기 락 (write lock) 을 설정하여 중간 데이터 변경을 방지합니다.

드라이버를 사용하여 다음과 같은 복합 작업을 수행할 수 있습니다.

  • 문서 한 개 찾기 및 삭제

  • 하나의 문서 찾기 및 업데이트

  • 하나의 문서 찾기 및 바꾸기

이 가이드에는 다음 섹션이 포함되어 있습니다.

  • 예제용 샘플 데이터는 복합 작업 예제에서 사용되는 샘플 데이터를 제공합니다.

  • 문서 찾기 및 삭제 에서는 한 번의 작업으로 문서를 찾고 삭제하는 방법을 설명합니다.

  • 문서 찾기 및 업데이트 에서는 한 번의 작업으로 문서를 찾고 업데이트하는 방법을 설명합니다.

  • 문서 찾기 및 바꾸기 에서는 한 번의 작업으로 문서를 찾고 바꾸는 방법을 설명합니다.

  • 추가 정보에서 이 가이드에 언급된 유형 및 메소드에 대한 리소스 및 API 문서 링크를 찾을 수 있습니다.

한 번에 두 개 이상의 문서에서 원자성 읽기 및 쓰기 작업을 수행하는 방법을 알아보려면 트랜잭션 가이드를 참조하세요.

이 가이드의 예에서는 다음 샘플 문서를 사용합니다. 각 문서는 학생을 나타내며 해당 문서의 연령 및 재학 중인 학교에 대한 정보를 포함합니다.

{ "name": "Alex Johnson", "age": 8, "school": "Lakeside Elementary" },
{ "name": "Samara Khan", "age": 11, "school": "Rolling Hills Middle School" },
{ "name": "Ben Joseph", "age": 16, "school": "Aurora High School" },
{ "name": "Deanna Porowski", "age": 10, "school": "Lakeside Elementary" }

find_one_and_delete() 메서드는 지정된 쿼리 필터와 일치하는 첫 번째 문서를 찾아 삭제합니다. 문서가 필터 기준과 일치하는 경우 메서드는 Some 유형을 반환합니다. 일치하는 문서가 없으면 None 유형을 반환합니다.

참고

문서 찾기와 삭제 사이에 다른 작업을 수행하려면 find_one() 메서드를 호출한 다음 delete_one() 메서드를 호출하면 됩니다.

옵션 빌더 메서드를 find_one_and_delete() 에 연결하여 find_one_and_delete() 메서드의 동작을 선택적으로 수정할 수 있습니다. 이러한 빌더 메서드 설정하다 FindOneAndDeleteOptions 구조체 필드를 설정합니다.

다음 표에서는 FindOneAndDeleteOptions 에서 사용할 수 있는 옵션에 대해 설명합니다.

옵션
설명

max_time

쿼리 실행 수 있는 최대 시간(밀리초)입니다.

유형: Duration

projection

결과를 반환할 때 사용할 프로젝션 .

유형: Document
기본값: None

sort

결과를 반환할 때 사용할 정렬 순서입니다. 기본값 으로 운전자 문서를 기본 순서 대로 또는 데이터베이스 에 표시된 대로 반환합니다. 자세히 학습 서버 매뉴얼 용어집에서 기본 순서 참조하세요.

유형: Document
기본값: None

write_concern

작업에 대한 쓰기 고려 (write concern) . 이 옵션을 설정하다 하지 않으면 작업은 컬렉션 에 대해 설정하다 쓰기 고려 (write concern) 상속합니다. 쓰기 (write) 고려에 대해 자세히 학습 서버 매뉴얼에서 쓰기 고려를 참조하세요.

유형: WriteConcern

collation

결과를 정렬할 때 사용할 데이터 정렬입니다. 데이터 정렬에 대해 자세히 학습 데이터 정렬 가이드 참조하세요.

유형: Collation
기본값: None

hint

작업에 사용할 인덱스 입니다. 인덱스에 대해 자세히 학습 서버 매뉴얼의 인덱스를 참조하세요. 이 옵션은 MongoDB Server 버전 이상에 연결할 때만 사용할 수 4.4 있습니다.

유형: Hint
기본값: None

let_vars

매개변수 및 값의 맵입니다. 집계 표현식에서 이러한 매개변수에 변수로 액세스 할 수 있습니다. 이 옵션은 MongoDB Server 버전 이상에 연결할 때만 사용할 수 5.0 있습니다.

유형: Document

comment

Bson 데이터베이스 프로파일러, 및 로그를 통해 추적하는 작업에 연결된 임의의currentOp 값입니다. 이 옵션은 MongoDB Server 버전 이상에 연결할 때만 사용할 수 4.4 있습니다.

유형: Bson
기본값: None

참고

설정 옵션

옵션 빌더 메서드를 find_one_and_delete() 메서드 호출에 직접 연결하여 FindOneAndDeleteOptions 필드를 설정하다 수 있습니다. 이전 버전의 운전자 를 사용하는 경우 옵션 빌더 메서드를 builder() 메서드에 연결하여 FindOneAndDeleteOptions 인스턴스 를 구성해야 합니다. 그런 다음 옵션 인스턴스 를 find_one_and_delete() 에 매개 변수로 전달합니다.

다음 코드는 comment() 메서드를 find_one_and_delete() 메서드에 연결하여 comment 필드 를 설정하다 하는 방법을 보여줍니다.

let res = my_coll.find_one_and_delete(filter)
.comment(bson!("hello"))
.await?;

다음 예에서는 find_one_and_delete() 메서드를 사용하여 age 필드의 값이 10 보다 작거나 같은 첫 번째 문서를 일치시키고 삭제합니다.

let filter = doc! { "age": doc! { "$lte": 10 } };
let res = my_coll.find_one_and_delete(filter).await?;
println!("Deleted document:\n{:?}", res);
Deleted document:
Some(Document({"_id": ObjectId("..."),
"name": String("Deanna Porowski"), "age": Int32(10), "school":
String("Lakeside Elementary")}))

find_one_and_update() 메서드는 지정된 쿼리 필터와 일치하는 첫 번째 문서를 찾아 업데이트합니다. 이 작업은 업데이트 문서에 제공한 사양을 기반으로 문서를 업데이트합니다. 문서가 필터 기준과 일치하는 경우 메서드는 Some 유형을 반환합니다. 일치하는 문서가 없으면 None 유형을 반환합니다.

참고

문서 찾기와 업데이트 사이에 다른 작업을 수행하려면 find_one() 메서드를 호출한 다음 update_one() 메서드를 호출하면 됩니다.

옵션 빌더 메서드를 find_one_and_update() 에 연결하여 find_one_and_update() 메서드의 동작을 선택적으로 수정할 수 있습니다. 이러한 빌더 메서드 설정하다 FindOneAndUpdateOptions 구조체 필드를 설정합니다.

다음 표에서는 FindOneAndUpdateOptions 에서 사용할 수 있는 옵션에 대해 설명합니다.

옵션
설명

array_filters

업데이트 적용되는 배열 요소를 지정하는 필터 설정하다 입니다. 자세히 학습 문서에서 배열 업데이트 가이드 를 참조하세요.

유형: Vec<Document>

bypass_document_validation

true 경우 운전자 문서 수준 유효성 검사 위반하는 쓰기 (write) 수행할 수 있도록 허용합니다. 유효성 검사 에 대해 자세히 학습 서버 매뉴얼의 스키마 유효성 검사 참조하세요.

유형: bool
기본값: false

max_time

쿼리 실행 수 있는 최대 시간(밀리초)입니다.

유형: Duration

projection

결과를 반환할 때 사용할 프로젝션 .

유형: Document
기본값: None

return_document

Before인 경우 작업은 업데이트 전의 문서 반환합니다. 인 After 경우 작업은 업데이트된 문서 를 반환합니다.

유형: ReturnDocument
기본값: ReturnDocument::Before

sort

결과를 반환할 때 사용할 정렬 순서입니다. 기본값 으로 운전자 문서를 기본 순서 대로 또는 데이터베이스 에 표시된 대로 반환합니다. 자세히 학습 서버 매뉴얼 용어집에서 기본 순서 참조하세요.

유형: Document
기본값: None

upsert

true이면 쿼리 필터하다 와 일치하는 문서가 없는 경우 작업에서 문서 삽입합니다.

유형: bool
기본값: false

write_concern

작업에 대한 쓰기 고려 (write concern) . 이 옵션을 설정하다 하지 않으면 작업은 컬렉션 에 대해 설정하다 쓰기 고려 (write concern) 상속합니다. 쓰기 (write) 고려에 대해 자세히 학습 서버 매뉴얼에서 쓰기 고려를 참조하세요.

유형: WriteConcern

collation

결과를 정렬할 때 사용할 데이터 정렬입니다. 데이터 정렬에 대해 자세히 학습 데이터 정렬 가이드 참조하세요.

유형: Collation
기본값: None

hint

작업에 사용할 인덱스 입니다. 인덱스에 대해 자세히 학습 서버 매뉴얼의 인덱스를 참조하세요. 이 옵션은 MongoDB Server 버전 이상에 연결할 때만 사용할 수 4.4 있습니다.

유형: Hint
기본값: None

let_vars

매개변수 및 값의 맵입니다. 집계 표현식에서 이러한 매개변수에 변수로 액세스 할 수 있습니다. 이 옵션은 MongoDB Server 버전 이상에 연결할 때만 사용할 수 5.0 있습니다.

유형: Document

comment

Bson 데이터베이스 프로파일러, 및 로그를 통해 추적하는 작업에 연결된 임의의currentOp 값입니다. 이 옵션은 MongoDB Server 버전 이상에 연결할 때만 사용할 수 4.4 있습니다.

유형: Bson
기본값: None

다음 코드는 comment() 메서드를 find_one_and_update() 메서드에 연결하여 comment 필드 를 설정하다 하는 방법을 보여줍니다.

let res = my_coll.find_one_and_update(filter, update)
.comment(bson!("hello"))
.await?;

이 예시 에서는 다음 조치를 수행하는 방법을 보여 줍니다.

  • find_one_and_update() 메서드 호출

  • school 값이 "Aurora High School"인 문서 와 일치하는 find_one_and_update() 에 쿼리 필터하다 를 전달합니다.

  • 업데이트 문서 를 find_one_and_update() 에 전달하여 school 필드 를 "Durango High School" (으)로 설정하고 age 필드 를 1만큼 증가시킵니다.

  • 업데이트 일치하는 문서 를 반환하려면 return_document() 메서드를 find_one_and_update() 에 연결합니다.

let filter = doc! { "school": "Aurora High School" };
let update =
doc! { "$set": doc! { "school": "Durango High School" },
"$inc": doc! { "age": 1 } };
let res = my_coll.find_one_and_update(filter, update)
.return_document(ReturnDocument::After)
.await?;
println!("Updated document:\n{:?}", res);
Updated document:
Some(Document({"_id": ObjectId("..."),
"name": String("Ben Joseph"), "age": Int32(17), "school":
String("Durango High School")}))

find_one_and_replace() 메서드는 지정된 쿼리 필터와 일치하는 첫 번째 문서를 찾아서 바꿉니다. 이 작업은 _id 필드를 제외한 문서의 모든 필드를 사용자가 제공한 필드 및 값으로 대체합니다. 문서가 필터 기준과 일치하면 메서드는 Some 유형을 반환합니다. 일치하는 문서가 없으면 None 유형을 반환합니다.

참고

문서 찾기와 바꾸기 사이에 다른 작업을 수행하려면 find_one() 메서드를 호출한 다음 replace_one() 메서드를 호출하면 됩니다.

옵션 빌더 메서드를 find_one_and_replace() 에 연결하여 find_one_and_replace() 메서드의 동작을 선택적으로 수정할 수 있습니다. 이러한 빌더 메서드 설정하다 FindOneAndReplaceOptions 구조체 필드를 설정합니다.

다음 표에서는 FindOneAndReplaceOptions 에서 사용할 수 있는 옵션에 대해 설명합니다.

옵션
설명

bypass_document_validation

true 경우 운전자 문서 수준 유효성 검사 위반하는 쓰기 (write) 수행할 수 있도록 허용합니다. 유효성 검사 에 대해 자세히 학습 서버 매뉴얼의 스키마 유효성 검사 참조하세요.

유형: bool
기본값: false

max_time

쿼리 실행 수 있는 최대 시간(밀리초)입니다.

유형: Duration

projection

결과를 반환할 때 사용할 프로젝션 .

유형: Document
기본값: None

return_document

Before인 경우 작업은 업데이트 전의 문서 반환합니다. 인 After 경우 작업은 업데이트된 문서 를 반환합니다.

유형: ReturnDocument
기본값: ReturnDocument::Before

sort

결과를 반환할 때 사용할 정렬 순서입니다. 기본값 으로 운전자 문서를 기본 순서 대로 또는 데이터베이스 에 표시된 대로 반환합니다. 자세히 학습 서버 매뉴얼 용어집에서 기본 순서 참조하세요.

유형: Document
기본값: None

upsert

true이면 쿼리 필터하다 와 일치하는 문서가 없는 경우 작업에서 문서 삽입합니다.

유형: bool
기본값: false

write_concern

작업에 대한 쓰기 고려 (write concern) . 이 옵션을 설정하다 하지 않으면 작업은 컬렉션 에 대해 설정하다 쓰기 고려 (write concern) 상속합니다. 쓰기 (write) 고려에 대해 자세히 학습 서버 매뉴얼에서 쓰기 고려를 참조하세요.

유형: WriteConcern

collation

결과를 정렬할 때 사용할 데이터 정렬입니다. 데이터 정렬에 대해 자세히 학습 데이터 정렬 가이드 참조하세요.

유형: Collation
기본값: None

hint

작업에 사용할 인덱스 입니다. 인덱스에 대해 자세히 학습 서버 매뉴얼의 인덱스를 참조하세요. 이 옵션은 MongoDB Server 버전 이상에 연결할 때만 사용할 수 4.4 있습니다.

유형: Hint
기본값: None

let_vars

매개변수 및 값의 맵입니다. 집계 표현식에서 이러한 매개변수에 변수로 액세스 할 수 있습니다. 이 옵션은 MongoDB Server 버전 이상에 연결할 때만 사용할 수 5.0 있습니다.

유형: Document

comment

Bson 데이터베이스 프로파일러, 및 로그를 통해 추적하는 작업에 연결된 임의의currentOp 값입니다. 이 옵션은 MongoDB Server 버전 이상에 연결할 때만 사용할 수 4.4 있습니다.

유형: Bson
기본값: None

다음 코드는 comment() 메서드를 find_one_and_replace() 메서드에 연결하여 comment 필드 를 설정하다 하는 방법을 보여줍니다.

let res = my_coll.find_one_and_replace(filter, replacement)
.comment(bson!("hello"))
.await?;

이 예에서는 다음 조치를 수행합니다.

  • find_one_and_replace() 메서드 호출

  • name 값에 string "Johnson"가 포함된 문서 와 일치하는 find_one_and_replace() 에 쿼리 필터하다 를 전달합니다.

  • 신규 학생을 설명하는 대체 문서 를 find_one_and_replace() 에 전달합니다.

  • return_document() 메서드를 find_one_and_replace() 에 연결하여 교체 후 문서 를 반환합니다.

  • projection() 메서드를 출력의 find_one_and_replace()``to project only the ``nameschool 필드에 연결합니다.

let filter = doc! { "name": doc! { "$regex": "Johnson" } };
let replacement =
doc! { "name": "Toby Fletcher",
"age": 14,
"school": "Durango High School" };
let res = my_coll.find_one_and_replace(filter, replacement)
.return_document(ReturnDocument::After)
.projection(doc! { "name": 1, "school": 1, "_id": 0 })
.await?;
println!("Document after replacement:\n{:?}", res);
Document after replacement:
Some(Document({"name": String("Toby Fletcher"), "school":
String("Durango High School")}))

이 가이드의 작업에 대해 자세히 알아보려면 다음 문서를 참조하세요.

이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 문서를 참조하세요.