एक मोंगोडब Cursor
Stream
लागू करता है futures
से टोकरा
. इसका उल्लेख docs
में किया गया है :
मैं वास्तव में try_collect()
. का उपयोग करने की अनुशंसा करता हूं TryStreamExt
से फ़ंक्शन
एक Result<Vec<Document>>
बजाय। फिर आप unwrap_or_else()
. का उपयोग कर सकते हैं सूची वापस करने के लिए। आपको collection_with_type()
. का भी इस्तेमाल करना चाहिए संग्रह प्राप्त करने के लिए विधि ताकि आपके परिणाम केवल Document
के बजाय उचित प्रकार के लिए स्वचालित रूप से deserialized हो जाएगा (बस सुनिश्चित करें कि यह Debug
को लागू करता है , Serialize
और Deserialize
)।
यह रहा एक कार्यशील नमूना
use futures::TryStreamExt;
use mongodb::Client;
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
struct Vehicle {
id: String,
name: String,
}
async fn list_all() -> Vec<Vehicle> {
let client = Client::with_uri_str("mongodb://example.com").await.unwrap();
let database = client.database("test");
let collection = database.collection_with_type::<Vehicle>("vehicles");
let cursor = match collection.find(None, None).await {
Ok(cursor) => cursor,
Err(_) => return vec![],
};
cursor.try_collect().await.unwrap_or_else(|_| vec![])
}