use mongodb::{Client, options::ClientOptions}; const MONGO_DB_ADDRESS: &str = "mongodb://docker:mongopw@localhost:55000"; #[tokio::main] async fn main() -> Result<(), Box> { // Parse a connection string into an options struct. let client_options = ClientOptions::parse(MONGO_DB_ADDRESS).await?; // Get a handle to the deployment. let client = Client::with_options(client_options)?; // Try creating a collection { use serde::{Deserialize, Serialize}; #[derive(Debug, Serialize, Deserialize)] struct Book { title: String, author: String, } // Reference a (new) database let db = client.database("db2"); // Get a handle to a collection of `Book`. let typed_collection = db.collection::("books"); let books = vec![ Book { title: "The Grapes of Wrath".to_string(), author: "John Steinbeck".to_string(), }, Book { title: "To Kill a Mockingbird".to_string(), author: "Harper Lee".to_string(), }, ]; // Insert the books into "mydb.books" collection, no manual conversion to BSON necessary. typed_collection.insert_many(books, None).await?; } // List the names of the databases in that deployment. for db_name in client.list_database_names(None, None).await? { println!("{}", db_name); // Get a handle to a database. let db = client.database(db_name.as_str()); // List the names of the collections in that database. for collection_name in db.list_collection_names(None).await? { println!("- {}", collection_name); } } Ok(()) }