Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
Rust ドライバー

クイック リファレンス

このページでは、Rust ドライバーを使用していくつかの一般的な MongoDB タスクを実行する例を紹介します。 次の表の各行は、タスクを説明し、タスクを実行するためのドライバー構文を示し、関連するリファレンスと API ドキュメントへのリンクを含みます。

Rust ドライバーは、非同期アプリケーションを実行するための非同期ランタイムを提供します。 さらに、ドライバーはブロッキング同期ランタイムをサポートしています。 次の表にリストされている各 MongoDB タスクに対して、非同期 API と同期 API の両方を使用する例を示すことができます。

Tip

非同期ランタイムと同期ランタイムの詳細については、 非同期 API と同期 APIガイドをご覧ください。

コマンド
構文
Find a Document

API Documentation

非同期ランタイム

let result = collection.find_one(
doc! { "title": "Peter Pan" },
None
).await?;

同期ランタイム

let result = collection.find_one(
doc! { "title": "Peter Pan" },
None
)?;

非同期ランタイム

let filter = doc! { "year": 1925 };
let mut cursor = collection.find(filter, None).await?;

同期ランタイム

let filter = doc! { "year": 1925 };
let mut cursor = collection.find(filter, None)?;

非同期ランタイム

let doc = doc! {
"title": "Mistress America", "type": "movie"
};
let result = collection.insert_one(doc, None).await?;

同期ランタイム

let doc = doc! {
"title": "Mistress America", "type": "movie"
};
let result = collection.insert_one(doc, None)?;

非同期ランタイム

let docs = vec![
doc! { "title": "Friends With Money", "runtime": 88 },
doc! { "title": "Please Give", "runtime": 90 },
doc! { "title": "You Hurt My Feelings", "runtime": 93 },
];
let result = collection.insert_many(docs, None).await?;

同期ランタイム

let docs = vec![
doc! { "title": "Friends With Money", "runtime": 88 },
doc! { "title": "Please Give", "runtime": 90 },
doc! { "title": "You Hurt My Feelings", "runtime": 93 },
];
let result = collection.insert_many(docs, None)?;

非同期ランタイム

let filter = doc! { "title": "Burn After Reading"};
let update =
doc! {
"$set": doc!{ "num_mflix_comments": 1 }
};
let result = collection.update_one(
filter, update, None
).await?;

同期ランタイム

let filter = doc! { "title": "Burn After Reading"};
let update =
doc! {
"$set": doc!{ "num_mflix_comments": 1 }
};
let result = collection.update_one(
filter, update, None
)?;

非同期ランタイム

let filter = doc! { "rated": "PASSED"};
let update =
doc! {
"$set": doc!{ "rated": "Not Rated" }
};
let result = collection.update_many(
filter, update, None
).await?;

同期ランタイム

let filter = doc! { "rated": "PASSED"};
let update =
doc! {
"$set": doc!{ "rated": "Not Rated" }
};
let result = collection.update_many(
filter, update, None
)?;

非同期ランタイム

let filter = doc! { "title": "è Nous la Libertè" };
let replacement =
doc! {
"title": "À nous la liberté",
"type": "movie",
"directors": vec! [ "René Clair" ]
};
let result = collection.replace_one(
filter, replacement, None
).await?;

同期ランタイム

let filter = doc! { "title": "è Nous la Libertè" };
let replacement =
doc! {
"title": "À nous la liberté",
"type": "movie",
"directors": vec! [ "René Clair" ]
};
let result = collection.replace_one(
filter, replacement, None
)?;

非同期ランタイム

let filter = doc! { "title": "Search and Destroy" };
let result = collection.delete_one(filter, None).await?;

同期ランタイム

let filter = doc! { "title": "Search and Destroy" };
let result = collection.delete_one(filter, None)?;

非同期ランタイム

let filter = doc! {
"year": doc! { "$lt": 1920 }
};
let result = collection.delete_many(filter, None).await?;

同期ランタイム

let filter = doc! {
"year": doc! { "$lt": 1920 }
};
let result = collection.delete_many(filter, None)?;
Access Data from a Cursor Iteratively

非同期ランタイム

let mut cursor = collection.find(
doc! { "$and": vec!
[
doc! { "metacritic": doc! { "$gt": 90 } },
doc! { "directors": vec! [ "Martin Scorsese" ] }
] },
None
).await?;
while let Some(result) = cursor.try_next().await? {
println!("{}", result);
};

同期ランタイム

let cursor = collection.find(
doc! { "$and": vec!
[
doc! { "metacritic": doc! { "$gt": 90 } },
doc! { "directors": vec! [ "Martin Scorsese" ] }
] },
None
)?;
for result in cursor {
println!("{}", result?);
}
Access Data from a Cursor as an Array

非同期ランタイム

let cursor = collection.find(
doc! { "title": "Secrets & Lies" }, None
).await?;
let results: Vec<Document> = cursor.try_collect().await?;

同期ランタイム

let cursor = collection.find(
doc! { "title": "Secrets & Lies" }, None
)?;
let results: Vec<Result<Document>> = cursor.collect();

非同期ランタイム

let filter = doc! {
"languages": vec! [ "Mandarin" ]
};
let result = collection.count_documents(filter, None).await?;

同期ランタイム

let filter = doc! {
"languages": vec! [ "Mandarin" ]
};
let result = collection.count_documents(filter, None)?;
List Distinct Values of a Field

非同期ランタイム

let field_name = "title";
let filter = doc! {
"directors": vec! [ "Sean Baker" ]
};
let results = collection.distinct(
field_name, filter, None
).await?;

同期ランタイム

let field_name = "title";
let filter = doc! {
"directors": vec! [ "Sean Baker" ]
};
let results = collection.distinct(
field_name, filter, None
)?;
Limit the Number of Documents Retrieved

非同期ランタイム

let opts: FindOptions = FindOptions::builder()
.limit(5)
.build();
let filter = doc! { "awards.wins": 25};
let mut cursor = collection.find(filter, opts).await?;

同期ランタイム

let opts: FindOptions = FindOptions::builder()
.limit(5)
.build();
let filter = doc! { "awards.wins": 25};
let mut cursor = collection.find(filter, opts)?;
Skip Retrieved Documents

非同期ランタイム

let opts: FindOptions = FindOptions::builder()
.skip(1)
.build();
let filter = doc! { "runtime": 100 };
let mut cursor = collection.find(filter, opts).await?;

同期ランタイム

let opts: FindOptions = FindOptions::builder()
.skip(1)
.build();
let filter = doc! { "runtime": 100 };
let mut cursor = collection.find(filter, opts)?;
Sort the Documents When Retrieving Them

非同期ランタイム

let opts: FindOptions = FindOptions::builder()
.sort(doc! { "imdb.rating": 1 })
.build();
let filter = doc! {
"directors": vec! [ "Nicole Holofcener" ]
};
let mut cursor = collection.find(filter, opts).await?;

同期ランタイム

let opts: FindOptions = FindOptions::builder()
.sort(doc! { "imdb.rating": 1 })
.build();
let filter = doc! {
"directors": vec! [ "Nicole Holofcener" ]
};
let mut cursor = collection.find(filter, opts)?;
Project Document Fields When Retrieving Them

非同期ランタイム

let opts: FindOptions = FindOptions::builder()
.projection(doc! { "title": 1, "metacritic": 1, "_id": 0 })
.build();
let filter = doc! { "year": 2015 };
let mut cursor = collection.find(filter, opts).await?;

同期ランタイム

let opts: FindOptions = FindOptions::builder()
.projection(doc! { "title": 1, "metacritic": 1, "_id": 0 })
.build();
let filter = doc! { "year": 2015 };
let mut cursor = collection.find(filter, opts)?;
Create an Index

非同期ランタイム

let index: IndexModel = IndexModel::builder()
.keys(doc! { "title": 1 })
.build();
let result = collection.create_index(index, None).await?;

同期ランタイム

let index: IndexModel = IndexModel::builder()
.keys(doc! { "title": 1 })
.build();
let result = collection.create_index(index, None)?;

戻る

次のステップ