AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

クイック リファレンス

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

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

Tip

非同期ランタイムと同期ランタイムの詳細については、「非同期 API と同期 APIガイド 」を参照してください。

コマンド
構文

非同期ランタイム

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

同期ランタイム

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

複数ドキュメントの検索

API ドキュメント
Fundamentals Guide
使用例

非同期ランタイム

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)?;

複数のドキュメントの挿入

API ドキュメント
Fundamentals Guide
使用例

非同期ランタイム

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
)?;

複数のドキュメントの更新

API ドキュメント
Fundamentals Guide
使用例

非同期ランタイム

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
)?;

ドキュメントの置き換え

API ドキュメント
Fundamentals Guide
使用例

非同期ランタイム

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)?;

複数のドキュメントの削除

API ドキュメント
Fundamentals Guide
使用例

非同期ランタイム

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)?;

カーソルから反復的にデータにアクセスする

API ドキュメント
Fundamentals Guide

非同期ランタイム

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?);
}

カーソルから配列としてカーソルにアクセス

API ドキュメント
Fundamentals Guide

非同期ランタイム

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();

ドキュメントをカウント

API ドキュメント
使用例

非同期ランタイム

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)?;

フィールドの個別の値を一覧表示

API ドキュメント
使用例

非同期ランタイム

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
)?;

取得されるドキュメント数の制限

API ドキュメント

非同期ランタイム

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)?;

検索されたドキュメントをスキップする

API ドキュメント

非同期ランタイム

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)?;

ドキュメントを取得するときにソートする

API ドキュメント

非同期ランタイム

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)?;

プロジェクト ドキュメント フィールドを取得する際

API ドキュメント

非同期ランタイム

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)?;

インデックスの作成

API ドキュメント

非同期ランタイム

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)?;