sql >> Databáze >  >> NoSQL >> MongoDB

Jak získat sbírku dokumentů z kurzoru mongodb?

Cursor mongodb implementuje Stream z futures přepravka . Toto je zmíněno v dokumentech :

Vlastně bych doporučil použít try_collect() funkce z TryStreamExt vlastnost získat Result<Vec<Document>> namísto. Pak můžete použít unwrap_or_else() vrátit seznam. Měli byste také použít collection_with_type() způsob, jak získat kolekci, takže vaše výsledky budou automaticky deserializovány na správný typ namísto pouhého Document (Jen se ujistěte, že implementuje Debug , Serialize a Deserialize ).

Zde je pracovní ukázka

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![])
}



  1. server vrátil chybu v kroku ověřování SASL:Autentizace se nezdařila

  2. MongoDB synchronizuje vývojové a výrobní databáze

  3. Najděte dokumenty, které obsahují určitá pole pro dílčí objekt MongoDb a Node.js

  4. Dotaz na dokument a všechny jeho vnořené dokumenty, které odpovídají podmínce v mongodb (pomocí pružiny)