1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
//! This crate is a pure Rust MongoDB driver. It follows the //! [MongoDB driver API and feature specifications](https://github.com/mongodb/specifications). //! //! To connect to a MongoDB database, pass a MongoDB connection string to //! [`Client::with_uri_str`](struct.Client.html#method.with_uri_str): //! //! ```rust //! # use mongodb::{Client, error::Result}; //! # //! # fn make_client() -> Result<Client> { //! let client = Client::with_uri_str("mongodb://localhost:27017/")?; //! # Ok(client) //! # } //! ``` //! Alternately, create an instance of [`ClientOptions`](options/struct.ClientOptions.html) and pass //! it to [`Client::with_options`](struct.Client.html#method.with_options): //! //! ```rust //! # use mongodb::{ //! # error::Result, //! # options::{StreamAddress, ClientOptions}, //! # Client, //! # }; //! # //! # fn make_client() -> Result<Client> { //! let options = ClientOptions::builder() //! .hosts(vec![ //! StreamAddress { //! hostname: "localhost".into(), //! port: Some(27017), //! } //! ]) //! .build(); //! //! let client = Client::with_options(options)?; //! # Ok(client) //! # } //! ``` //! //! Operations can be performed by obtaining a [`Database`](struct.Database.html) or //! [`Collection`](struct.Collection.html) from the [`Client`](struct.Client.html): //! //! ```rust //! # use bson::{bson, doc}; //! # use mongodb::{Client, error::Result}; //! # //! # fn do_stuff() -> Result<()> { //! # let client = Client::with_uri_str("mongodb://localhost:27017")?; //! # //! let db = client.database("some_db"); //! for coll_name in db.list_collection_names(None)? { //! println!("collection: {}", coll_name); //! } //! //! let coll = db.collection("some-coll"); //! let result = coll.insert_one(doc! { "x": 1 }, None)?; //! println!("{:#?}", result); //! //! # Ok(()) //! # } //! ``` #![allow(unused_variables)] #![cfg_attr( feature = "cargo-clippy", allow( clippy::unreadable_literal, clippy::cognitive_complexity, clippy::float_cmp ) )] #[macro_use] pub mod options; mod bson_util; mod client; mod cmap; mod coll; mod collation; mod concern; mod cursor; mod db; pub mod error; pub mod event; mod is_master; mod operation; pub mod results; mod sdam; mod selection_criteria; mod srv; #[cfg(test)] mod test; #[cfg(test)] #[macro_use] extern crate derive_more; pub use crate::{ client::Client, coll::{Collection, Namespace}, cursor::Cursor, db::Database, };