MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да получите колекция от документи от курсора на mongodb?

Mongodb Cursor внедрява Stream от futures щайга . Това е споменато в документи :

Всъщност бих препоръчал използването на try_collect() функция от TryStreamExt черта за получаване на Result<Vec<Document>> вместо. След това можете да използвате unwrap_or_else() за връщане на списъка. Трябва също да използвате collection_with_type() метод за получаване на колекцията, така че резултатите ви да бъдат автоматично десериализирани до правилния тип вместо само Document (само се уверете, че прилага 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![])
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bash shell скриптът не се свързва с MongoDB, дори ако състоянието е активно

  2. Мога ли да променя съществуващ индекс в MongoDB, без да го пускам?

  3. Мангуста:Схема срещу модел?

  4. Актуализиране на вложени обекти на масиви въз основа на свойство в MongoDB

  5. MongoDB PowerPC инсталация за Squeeze