MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak zdobyć kolekcję dokumentu z kursora mongodb?

Mongodb Cursor implementuje Stream z futures skrzynia . Jest to wspomniane w dokumentacji :

Właściwie polecam użycie try_collect() funkcja z TryStreamExt cecha, aby uzyskać Result<Vec<Document>> zamiast. Następnie możesz użyć unwrap_or_else() aby zwrócić listę. Powinieneś także użyć collection_with_type() metodę, aby pobrać kolekcję, dzięki czemu wyniki zostaną automatycznie zdeserializowane do właściwego typu, a nie tylko Document (tylko upewnij się, że implementuje Debug , Serialize i Deserialize ).

Oto próbka robocza

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak zapewnić, że Twoje klastry MongoDB przetrwają przerwy w działaniu usługi Amazon AWS?

  2. Agreguj i zmniejszaj zagnieżdżoną tablicę na podstawie ObjectId

  3. model mangusty, tablica ciągów, tablica struktury obiektów

  4. MongoDB:Chcę przechowywać obiekt tablicy w kolekcji

  5. Przewodnik po zapytaniach w Spring Data MongoDB