複数ドキュメントの検索
コレクション内の複数のドキュメントをクエリするには、 find() Collection
インスタンスのメソッド。
コレクション内のフィルターに一致するドキュメントを返すには、 find()
メソッドにクエリフィルターを渡します。 フィルターを含めない場合、MongoDB はコレクション内のすべてのドキュメントを返します。
find()
メソッドは カーソル を返します タイプ。これを反復処理して個々のドキュメントを検索できます。カーソルの使用の詳細については、「 カーソルを使用したデータへのアクセス」ガイドを参照してください。
例
この例では、 sample_restaurants
データベース内のrestaurants
コレクションからクエリフィルターに一致するドキュメントを検索します。 この例では、 Restaurant
構造体のインスタンスに検索されたドキュメントのデータを入力します。
次のコードでは、 cuisine
フィールドの値が"French"
であるドキュメントに一致するクエリフィルターを使用します。
AsynchronousSynchronous各実行時に対応するコードを表示するには、 タブまたは タブを選択します。
use mongodb::{ bson::doc, Client, Collection }; use futures::TryStreamExt; use serde::{ Deserialize, Serialize }; struct Restaurant { name: String, cuisine: String, } async fn main() -> mongodb::error::Result<()> { let uri = "<connection string>"; let client = Client::with_uri_str(uri).await?; let my_coll: Collection<Restaurant> = client .database("sample_restaurants") .collection("restaurants"); let mut cursor = my_coll.find( doc! { "cuisine": "French" } ).await?; while let Some(doc) = cursor.try_next().await? { println!("{:?}", doc); } Ok(()) }
// Results truncated ... Restaurant { name: "Cafe Un Deux Trois", cuisine: "French" } Restaurant { name: "Calliope", cuisine: "French" } ...
use mongodb::{ bson::doc, sync::{Client, Collection} }; use serde::{ Deserialize, Serialize }; struct Restaurant { name: String, cuisine: String, } fn main() -> mongodb::error::Result<()> { let uri = "<connection string>"; let client = Client::with_uri_str(uri)?; let my_coll: Collection<Restaurant> = client .database("sample_restaurants") .collection("restaurants"); let mut cursor = my_coll.find( doc! { "cuisine": "French" } ).run()?; for result in cursor { println!("{:?}", result?); } Ok(()) }
// Results truncated ... Restaurant { name: "Cafe Un Deux Trois", cuisine: "French" } Restaurant { name: "Calliope", cuisine: "French" } ...