sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan får man indsamling af et dokument fra mongodb cursor?

En mongodb Markør implementerer Strøm fra futures kasse . Dette er nævnt i dokumenterne :

Jeg vil faktisk anbefale at bruge try_collect() funktion fra TryStreamExt egenskab for at få et Resultat> i stedet. Så kan du bruge unwrap_or_else() for at returnere listen. Du bør også bruge collection_with_type() metode til at få samlingen, så dine resultater automatisk bliver deserialiseret til den rigtige type i stedet for kun Dokument (bare sørg for, at den implementerer Debug , Serialiser og Deserialize ).

Her er et arbejdseksempel

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 - $lookup pipeline ved hjælp af COLLSCAN i stedet for indeks

  2. Populate() ref indlejret i objektarray

  3. Mongo-tjenesten gik ned. Skal finde årsagen til nedbrud

  4. Brug af selleri til realtid, synkron ekstern API-forespørgsel med Gevent