sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur får man samling av dokument från mongodb cursor?

En mongodb Markör implementerar Ström från futures låda . Detta nämns i dokumenten :

Jag skulle faktiskt rekommendera att använda try_collect() funktionen från TryStreamExt egenskap för att få ett Resultat> istället. Sedan kan du använda unwrap_or_else() för att returnera listan. Du bör också använda collection_with_type() metod för att få samlingen så att dina resultat automatiskt deserialiseras till rätt typ istället för bara Dokument (se bara till att den implementerar Debug , Serialisera och Deserialisera ).

Här är ett fungerande exempel

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. MongoDB $dayOfYear

  2. Är redis en hållbar databutik?

  3. Hur får man utskrifter för att felsöka kartan/förminska i Mongoid?

  4. Vad är skillnaden mellan .in() och all.() operatorer i mongoose?