Docs Menu

クイック リファレンス

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

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

Tip

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

コマンド
構文

非同期ランタイム

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

同期ランタイム

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

非同期ランタイム

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

同期ランタイム

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

非同期ランタイム

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

同期ランタイム

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

非同期ランタイム

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).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).run()?;

非同期ランタイム

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

同期ランタイム

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

非同期ランタイム

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

同期ランタイム

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

非同期ランタイム

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).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).run()?;

非同期ランタイム

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

同期ランタイム

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

非同期ランタイム

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

同期ランタイム

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

非同期ランタイム

let mut cursor = collection
.find(doc! { "$and": vec!
[
doc! { "metacritic": doc! { "$gt": 90 } },
doc! { "directors": vec! [ "Martin Scorsese" ] }
] })
.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" ] }
] })
.run()?;
for result in cursor {
println!("{}", result?);
}
Access Data from a Cursor as an Array

非同期ランタイム

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

同期ランタイム

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

非同期ランタイム

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

同期ランタイム

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

非同期ランタイム

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

同期ランタイム

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

非同期ランタイム

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

同期ランタイム

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

非同期ランタイム

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

同期ランタイム

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

非同期ランタイム

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

同期ランタイム

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

非同期ランタイム

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

同期ランタイム

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

非同期ランタイム

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

同期ランタイム

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