Collection

Struct Collection 

Source
pub struct Collection<T = Document>{ /* private fields */ }
Expand description

Collection is the client-side abstraction of a MongoDB Collection. It can be used to perform collection-level operations such as CRUD operations. A Collection can be obtained through a Database by calling either Database::collection or Database::collection_with_options.

Collection uses std::sync::Arc internally, so it can safely be shared across threads. For example:

let coll = client.database("items").collection("in_stock");

for i in 0..5 {
    let coll_ref = coll.clone();

    std::thread::spawn(move || {
        // Perform operations with `coll_ref`. For example:
        coll_ref.insert_one(doc! { "x": i }, None);
    });
}

Implementations§

Source§

impl<T> Collection<T>

Source

pub fn clone_with_type<U>(&self) -> Collection<U>

Gets a clone of the Collection with a different type U.

Source

pub fn name(&self) -> &str

Gets the name of the Collection.

Source

pub fn namespace(&self) -> Namespace

Gets the namespace of the Collection.

The namespace of a MongoDB collection is the concatenation of the name of the database containing it, the ‘.’ character, and the name of the collection itself. For example, if a collection named “bar” is created in a database named “foo”, the namespace of the collection is “foo.bar”.

Source

pub fn selection_criteria(&self) -> Option<&SelectionCriteria>

Gets the selection criteria of the Collection.

Source

pub fn read_concern(&self) -> Option<&ReadConcern>

Gets the read concern of the Collection.

Source

pub fn write_concern(&self) -> Option<&WriteConcern>

Gets the write concern of the Collection.

Source

pub fn drop( &self, options: impl Into<Option<DropCollectionOptions>>, ) -> Result<(), Error>

Drops the collection, deleting all data, users, and indexes stored in it.

Source

pub fn aggregate( &self, pipeline: impl IntoIterator<Item = Document>, options: impl Into<Option<AggregateOptions>>, ) -> Result<Cursor, Error>

Runs an aggregation operation.

See the documentation here for more information on aggregations.

Source

pub fn estimated_document_count( &self, options: impl Into<Option<EstimatedDocumentCountOptions>>, ) -> Result<i64, Error>

Estimates the number of documents in the collection using collection metadata.

Source

pub fn count_documents( &self, filter: impl Into<Option<Document>>, options: impl Into<Option<CountOptions>>, ) -> Result<i64, Error>

Gets the number of documents matching filter.

Note that using Collection::estimated_document_count is recommended instead of this method is most cases.

Source

pub fn delete_many( &self, query: Document, options: impl Into<Option<DeleteOptions>>, ) -> Result<DeleteResult, Error>

Deletes all documents stored in the collection matching query.

Source

pub fn delete_one( &self, query: Document, options: impl Into<Option<DeleteOptions>>, ) -> Result<DeleteResult, Error>

Deletes up to one document found matching query.

This operation will retry once upon failure if the connection and encountered error support retryability. See the documentation here for more information on retryable writes.

Source

pub fn distinct( &self, field_name: &str, filter: impl Into<Option<Document>>, options: impl Into<Option<DistinctOptions>>, ) -> Result<Vec<Bson>, Error>

Finds the distinct values of the field specified by field_name across the collection.

Source

pub fn find( &self, filter: impl Into<Option<Document>>, options: impl Into<Option<FindOptions>>, ) -> Result<Cursor<T>, Error>

Finds the documents in the collection matching filter.

Source

pub fn find_one( &self, filter: impl Into<Option<Document>>, options: impl Into<Option<FindOneOptions>>, ) -> Result<Option<T>, Error>

Finds a single document in the collection matching filter.

Source

pub fn find_one_and_delete( &self, filter: Document, options: impl Into<Option<FindOneAndDeleteOptions>>, ) -> Result<Option<T>, Error>

Atomically finds up to one document in the collection matching filter and deletes it.

This operation will retry once upon failure if the connection and encountered error support retryability. See the documentation here for more information on retryable writes.

Source

pub fn find_one_and_replace( &self, filter: Document, replacement: T, options: impl Into<Option<FindOneAndReplaceOptions>>, ) -> Result<Option<T>, Error>

Atomically finds up to one document in the collection matching filter and replaces it with replacement.

This operation will retry once upon failure if the connection and encountered error support retryability. See the documentation here for more information on retryable writes.

Source

pub fn find_one_and_update( &self, filter: Document, update: impl Into<UpdateModifications>, options: impl Into<Option<FindOneAndUpdateOptions>>, ) -> Result<Option<T>, Error>

Atomically finds up to one document in the collection matching filter and updates it. Both Document and Vec<Document> implement Into<UpdateModifications>, so either can be passed in place of constructing the enum case. Note: pipeline updates are only supported in MongoDB 4.2+.

This operation will retry once upon failure if the connection and encountered error support retryability. See the documentation here for more information on retryable writes.

Source

pub fn insert_many( &self, docs: impl IntoIterator<Item = T>, options: impl Into<Option<InsertManyOptions>>, ) -> Result<InsertManyResult, Error>

Inserts the documents in docs into the collection.

This operation will retry once upon failure if the connection and encountered error support retryability. See the documentation here for more information on retryable writes.

Source

pub fn insert_one( &self, doc: T, options: impl Into<Option<InsertOneOptions>>, ) -> Result<InsertOneResult, Error>

Inserts doc into the collection.

This operation will retry once upon failure if the connection and encountered error support retryability. See the documentation here for more information on retryable writes.

Source

pub fn replace_one( &self, query: Document, replacement: T, options: impl Into<Option<ReplaceOptions>>, ) -> Result<UpdateResult, Error>

Replaces up to one document matching query in the collection with replacement.

This operation will retry once upon failure if the connection and encountered error support retryability. See the documentation here for more information on retryable writes.

Source

pub fn update_many( &self, query: Document, update: impl Into<UpdateModifications>, options: impl Into<Option<UpdateOptions>>, ) -> Result<UpdateResult, Error>

Updates all documents matching query in the collection.

Both Document and Vec<Document> implement Into<UpdateModifications>, so either can be passed in place of constructing the enum case. Note: pipeline updates are only supported in MongoDB 4.2+. See the official MongoDB documentation for more information on specifying updates.

Source

pub fn update_one( &self, query: Document, update: impl Into<UpdateModifications>, options: impl Into<Option<UpdateOptions>>, ) -> Result<UpdateResult, Error>

Updates up to one document matching query in the collection.

Both Document and Vec<Document> implement Into<UpdateModifications>, so either can be passed in place of constructing the enum case. Note: pipeline updates are only supported in MongoDB 4.2+. See the official MongoDB documentation for more information on specifying updates.

This operation will retry once upon failure if the connection and encountered error support retryability. See the documentation here for more information on retryable writes.

Trait Implementations§

Source§

impl<T> Clone for Collection<T>

Source§

fn clone(&self) -> Collection<T>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T> Debug for Collection<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<T> Freeze for Collection<T>

§

impl<T = Document> !RefUnwindSafe for Collection<T>

§

impl<T> Send for Collection<T>

§

impl<T> Sync for Collection<T>

§

impl<T> Unpin for Collection<T>

§

impl<T = Document> !UnwindSafe for Collection<T>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> ErasedDestructor for T
where T: 'static,