Struct mongodb::Collection[][src]

pub struct Collection<T = Document> where
    T: Serialize + DeserializeOwned + Unpin + Debug
{ /* fields omitted */ }
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 or async tasks. For example:

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

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

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

Implementations

impl<T> Collection<T> where
    T: Serialize + DeserializeOwned + Unpin + Debug
[src]

pub fn clone_with_type<U: Serialize + DeserializeOwned + Unpin + Debug>(
    &self
) -> Collection<U>
[src]

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

pub fn name(&self) -> &str[src]

Gets the name of the Collection.

pub fn namespace(&self) -> Namespace[src]

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”.

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

Gets the selection criteria of the Collection.

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

Gets the read concern of the Collection.

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

Gets the write concern of the Collection.

pub async fn drop(
    &self,
    options: impl Into<Option<DropCollectionOptions>>
) -> Result<()>
[src]

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

pub async fn drop_with_session(
    &self,
    options: impl Into<Option<DropCollectionOptions>>,
    session: &mut ClientSession
) -> Result<()>
[src]

Drops the collection, deleting all data and indexes stored in it using the provided ClientSession.

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

Runs an aggregation operation.

See the documentation here for more information on aggregations.

pub async fn aggregate_with_session(
    &self,
    pipeline: impl IntoIterator<Item = Document>,
    options: impl Into<Option<AggregateOptions>>,
    session: &mut ClientSession
) -> Result<SessionCursor<Document>>
[src]

Runs an aggregation operation using the provided ClientSession.

See the documentation here for more information on aggregations.

pub async fn estimated_document_count(
    &self,
    options: impl Into<Option<EstimatedDocumentCountOptions>>
) -> Result<u64>
[src]

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

pub async fn count_documents(
    &self,
    filter: impl Into<Option<Document>>,
    options: impl Into<Option<CountOptions>>
) -> Result<u64>
[src]

Gets the number of documents matching filter.

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

pub async fn count_documents_with_session(
    &self,
    filter: impl Into<Option<Document>>,
    options: impl Into<Option<CountOptions>>,
    session: &mut ClientSession
) -> Result<u64>
[src]

Gets the number of documents matching filter using the provided ClientSession.

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

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

Deletes all documents stored in the collection matching query.

pub async fn delete_many_with_session(
    &self,
    query: Document,
    options: impl Into<Option<DeleteOptions>>,
    session: &mut ClientSession
) -> Result<DeleteResult>
[src]

Deletes all documents stored in the collection matching query using the provided ClientSession.

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

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.

pub async fn delete_one_with_session(
    &self,
    query: Document,
    options: impl Into<Option<DeleteOptions>>,
    session: &mut ClientSession
) -> Result<DeleteResult>
[src]

Deletes up to one document found matching query using the provided ClientSession.

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.

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

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

pub async fn distinct_with_session(
    &self,
    field_name: impl AsRef<str>,
    filter: impl Into<Option<Document>>,
    options: impl Into<Option<DistinctOptions>>,
    session: &mut ClientSession
) -> Result<Vec<Bson>>
[src]

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

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

Finds the documents in the collection matching filter.

pub async fn find_with_session(
    &self,
    filter: impl Into<Option<Document>>,
    options: impl Into<Option<FindOptions>>,
    session: &mut ClientSession
) -> Result<SessionCursor<T>>
[src]

Finds the documents in the collection matching filter using the provided ClientSession.

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

Finds a single document in the collection matching filter.

pub async fn find_one_with_session(
    &self,
    filter: impl Into<Option<Document>>,
    options: impl Into<Option<FindOneOptions>>,
    session: &mut ClientSession
) -> Result<Option<T>>
[src]

Finds a single document in the collection matching filter using the provided ClientSession.

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

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.

pub async fn find_one_and_delete_with_session(
    &self,
    filter: Document,
    options: impl Into<Option<FindOneAndDeleteOptions>>,
    session: &mut ClientSession
) -> Result<Option<T>>
[src]

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

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.

pub async fn find_one_and_replace(
    &self,
    filter: Document,
    replacement: impl Borrow<T>,
    options: impl Into<Option<FindOneAndReplaceOptions>>
) -> Result<Option<T>>
[src]

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.

pub async fn find_one_and_replace_with_session(
    &self,
    filter: Document,
    replacement: impl Borrow<T>,
    options: impl Into<Option<FindOneAndReplaceOptions>>,
    session: &mut ClientSession
) -> Result<Option<T>>
[src]

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

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.

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

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.

pub async fn find_one_and_update_with_session(
    &self,
    filter: Document,
    update: impl Into<UpdateModifications>,
    options: impl Into<Option<FindOneAndUpdateOptions>>,
    session: &mut ClientSession
) -> Result<Option<T>>
[src]

Atomically finds up to one document in the collection matching filter and updates it using the provided ClientSession. 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.

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

Inserts the data 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.

pub async fn insert_many_with_session(
    &self,
    docs: impl IntoIterator<Item = impl Borrow<T>>,
    options: impl Into<Option<InsertManyOptions>>,
    session: &mut ClientSession
) -> Result<InsertManyResult>
[src]

Inserts the data in docs into the collection using the provided ClientSession.

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.

pub async fn insert_one(
    &self,
    doc: impl Borrow<T>,
    options: impl Into<Option<InsertOneOptions>>
) -> Result<InsertOneResult>
[src]

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.

pub async fn insert_one_with_session(
    &self,
    doc: impl Borrow<T>,
    options: impl Into<Option<InsertOneOptions>>,
    session: &mut ClientSession
) -> Result<InsertOneResult>
[src]

Inserts doc into the collection using the provided ClientSession.

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.

pub async fn replace_one(
    &self,
    query: Document,
    replacement: impl Borrow<T>,
    options: impl Into<Option<ReplaceOptions>>
) -> Result<UpdateResult>
[src]

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.

pub async fn replace_one_with_session(
    &self,
    query: Document,
    replacement: impl Borrow<T>,
    options: impl Into<Option<ReplaceOptions>>,
    session: &mut ClientSession
) -> Result<UpdateResult>
[src]

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

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.

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

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.

pub async fn update_many_with_session(
    &self,
    query: Document,
    update: impl Into<UpdateModifications>,
    options: impl Into<Option<UpdateOptions>>,
    session: &mut ClientSession
) -> Result<UpdateResult>
[src]

Updates all documents matching query in the collection using the provided ClientSession.

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.

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

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.

pub async fn update_one_with_session(
    &self,
    query: Document,
    update: impl Into<UpdateModifications>,
    options: impl Into<Option<UpdateOptions>>,
    session: &mut ClientSession
) -> Result<UpdateResult>
[src]

Updates up to one document matching query in the collection using the provided ClientSession.

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

impl<T: Clone> Clone for Collection<T> where
    T: Serialize + DeserializeOwned + Unpin + Debug
[src]

fn clone(&self) -> Collection<T>[src]

Returns a copy of the value. Read more

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl<T: Debug> Debug for Collection<T> where
    T: Serialize + DeserializeOwned + Unpin + Debug
[src]

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

Formats the value using the given formatter. Read more

Auto Trait Implementations

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

impl<T> Send for Collection<T> where
    T: Send

impl<T> Sync for Collection<T> where
    T: Sync

impl<T> Unpin for Collection<T>

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

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T> Instrument for T[src]

fn instrument(self, span: Span) -> Instrumented<Self>[src]

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

fn in_current_span(self) -> Instrumented<Self>[src]

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

pub fn to_owned(&self) -> T[src]

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

pub fn clone_into(&self, target: &mut T)[src]

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

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

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

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

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

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

Performs the conversion.

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

pub fn vzip(self) -> V