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

비동기 및 동기 API

In this guide, you can learn about the Rust driver's asynchronous and synchronous APIs. This guide explains how to enable the available APIs and structure your code to use each.

Rust 드라이버는 널리 사용되는 비동기 런타임 크레이트인 tokio 및 async-std 을 지원합니다. 기본적으로 드라이버는 tokio 비동기 런타임을 사용하지만 Cargo.toml 파일의 mongodb 종속성에 기능 플래그를 추가하여 특정 런타임을 선택할 수 있습니다.

드라이버에는 차단이 필요하거나 병렬 처리가 필요하지 않은 사용 사례를 위한 동기 API도 포함되어 있습니다. Cargo.toml 파일의 mongodb 종속성에 기능 플래그를 추가하여 동기 API를 선택할 수 있습니다.

드라이버는 기본적으로 tokio 런타임을 사용합니다. mongodb 종속성에 "tokio-runtime" 또는 "async-std-runtime" 기능 플래그를 추가하여 런타임을 명시적으로 선택할 수 있습니다.

다음 탭에서 선택하여 각 크레이트에 대한 기능 플래그를 추가하는 방법을 확인합니다.

[dependencies.mongodb]
version = "2.8.2"
features = ["tokio-runtime"]

드라이버 설치 및 기능 플래그 추가에 대한 자세한 내용은 빠른 시작의 다운로드 및 설치 단계를 참조하세요.

다음 코드는 tokio 크레이트의 task 모듈을 사용하여 여러 데이터 작업에 대한 별도의 동시 작업을 생성합니다.

let client = Client::with_uri_str("<connection string>").await?;
let some_data = doc! { "title": "1984", "author": "George Orwell" };
for i in 0..5 {
let client_ref = client.clone();
let somedata_ref = some_data.clone();
task::spawn(async move {
let collection = client_ref
.database("items")
.collection::<Document>(&format!("coll{}", i));
collection.insert_one(somedata_ref, None).await
});
}

이 드라이버는 블로킹 동기 API도 제공합니다. 동기 API를 사용하려면 "sync" 또는 "tokio-sync" 기능 플래그 중 하나를 mongodb 종속성에 추가합니다.

다음 탭에서 선택하여 각 크레이트에 대한 기능 플래그를 추가하는 방법을 확인합니다.

[dependencies.mongodb]
version = "2.8.2"
default-features = false
features = ["sync"]

동기 API를 사용하는 경우 mongodb::sync 모듈의 유형을 사용하여 작업을 수행합니다. 다음 코드에서는 sync 모듈을 사용하여 동기 API를 사용하여 collection에 데이터를 삽입합니다. insert_one 메서드가 for 루프 내에서 실행되면 드라이버는 각 요청이 완료될 때까지 기다렸다가 계속 진행합니다.

use mongodb::sync::Client;
fn main() {
let client = Client::with_uri_str("<connection string>")?;
let some_data = doc! { "title": "1984", "author": "George Orwell" };
for i in 0..5 {
let client_ref = client.clone();
let somedata_ref = some_data.clone();
let collection = client_ref
.database("items")
.collection::<Document>(&format!("coll{}", i));
collection.insert_one(somedata_ref, None);
}
}

동일한 애플리케이션에서 비동기 및 동기 API를 모두 사용할 수 있습니다. 예를 들어 두 tokio 런타임을 모두 활성화하려면 종속성 목록에 tokio 종속성을 추가하고 mongodb 종속성에 "tokio-sync" 플래그를 추가하면 됩니다.

[dependencies]
futures = "0.3.28"
tokio = {version = "1.32.0", features = ["full"]}
[dependencies.mongodb]
version = "2.8.2"
features = ["tokio-sync"]

이 가이드의 개념에 대한 자세한 내용은 다음 페이지를 참조하세요.

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