Docs 菜单
Docs 主页
/ / /
Rust 驱动程序
/

查找多个文档

在此页面上

  • 例子
  • 输出

您可以通过在 Collection实例上调用 find() 方法来查询集合中的多个文档。

将查询筛选器传递给find()方法,以返回集合中与筛选器匹配的文档。 如果不包含筛选器,MongoDB 将返回collection中的所有文档。

提示

要学习;了解有关检索文档的更多信息,请参阅《 检索数据》指南,要学习;了解有关创建查询筛选器的更多信息,请参阅《指定查询》指南。

find()方法返回一个 游标 类型,您可以对其进行遍历以检索单个文档。要了解有关使用游标的更多信息,请参阅《使用游标访问数据》指南。

此示例从 sample_restaurants数据库的 restaurants集合中检索与查询过滤匹配的文档。 find() 方法返回 cuisine字段的值为 "French" 的所有文档。

您可以将每个检索到的文档建模为 Document 类型或自定义数据类型。要指定哪种数据类型表示集合的数据,请将突出显示的行上的 <T> 类型参数替换为以下值之一:

  • <Document>:检索集合文档并将其打印为BSON文档

  • <Restaurant>:检索集合文档并将其打印为 Restaurant 结构的实例,该结构在代码顶部定义

选择 AsynchronousSynchronous标签页,查看每个运行时的相应代码:

use mongodb::{
bson::doc,
Client,
Collection
};
use futures::TryStreamExt;
use serde::{ Deserialize, Serialize };
#[derive(Serialize, Deserialize, Debug)]
struct Restaurant {
name: String,
cuisine: String,
}
#[tokio::main]
async fn main() -> mongodb::error::Result<()> {
let uri = "<connection string>";
let client = Client::with_uri_str(uri).await?;
// Replace <T> with the <Document> or <Restaurant> type parameter
let my_coll: Collection<T> = 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(())
}
use mongodb::{
bson::doc,
sync::{Client, Collection}
};
use serde::{ Deserialize, Serialize };
#[derive(Serialize, Deserialize, Debug)]
struct Restaurant {
name: String,
cuisine: String,
}
fn main() -> mongodb::error::Result<()> {
let uri = "<connection string>";
let client = Client::with_uri_str(uri)?;
// Replace <T> with the <Document> or <Restaurant> type parameter
let my_coll: Collection<T> = client
.database("sample_restaurants")
.collection("restaurants");
let mut cursor = my_coll.find(
doc! { "cuisine": "French" }
).run()?;
for result in cursor {
println!("{:#?}", result?);
}
Ok(())
}

选择 BSON Document ResultsRestaurant Struct Results标签页,根据集合的类型参数查看相应的代码输出:

...
Some(
Document({
"_id": ObjectId(
"...",
),
...
"name": String(
"Cafe Un Deux Trois",
),
...
}),
),
Some(
Document({
"_id": ObjectId(
"...",
),
...
"name": String(
"Calliope",
),
...
}),
)
...
...
Restaurant {
name: "Cafe Un Deux Trois",
cuisine: "French",
}
Restaurant {
name: "Calliope",
cuisine: "French",
}
...

后退

找到一个

在此页面上