[][src]Struct mongodm::repository::Repository

pub struct Repository<M: Model> { /* fields omitted */ }

Associate a mongodb::Collection and a specific Model.

This type can safely be copied and passed around because std::sync::Arc is used internally. Underlying mongodb::Collection can be retrieved at anytime with Repository::get_underlying.

Implementations

impl<M: Model> Repository<M>[src]

pub fn new(db: Database) -> Self[src]

Create a new repository from the given mongo client.

pub fn new_with_options(db: Database, options: CollectionOptions) -> Self[src]

Create a new repository with associated collection options (override Model::coll_options).

pub fn collection_name(&self) -> &'static str[src]

Returns associated M::collection_name.

pub fn get_underlying(&self) -> Collection[src]

Returns underlying mongodb::Collection.

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

Drops the underlying collection, deleting all data, users, and indexes stored inside.

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

Runs an aggregation operation.

Mongo manual

pub async fn estimated_document_count<'_>(
    &'_ self,
    options: impl Into<Option<EstimatedDocumentCountOptions>>
) -> Result<i64>
[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<i64>
[src]

Gets the number of documents matching filter.

Note that using Repository::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_one<'_>(
    &'_ self,
    query: Document,
    options: impl Into<Option<DeleteOptions>>
) -> Result<DeleteResult>
[src]

Deletes up to one document found matching query.

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

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

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

Finds the documents in the collection matching filter.

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

Finds a single document in the collection matching filter.

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

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

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

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

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

Atomically finds up to one model 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+.

pub async fn insert_many<'_>(
    &'_ self,
    models: impl IntoIterator<Item = M>,
    options: impl Into<Option<InsertManyOptions>>
) -> Result<InsertManyResult>
[src]

Inserts the models into the collection.

pub async fn insert_one<'_, '_>(
    &'_ self,
    model: &'_ M,
    options: impl Into<Option<InsertOneOptions>>
) -> Result<InsertOneResult>
[src]

Inserts model M into the collection.

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

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

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

pub async fn sync_indexes<'_>(&'_ self) -> Result<(), Error>[src]

Synchronize model with underlying mongo collection.

This should be called once per model on startup to synchronize indexes defined by the Model. Indexes found in the backend and not defined in the model are destroyed except for the special index "_id".

Trait Implementations

impl<M: Clone + Model> Clone for Repository<M>[src]

impl<M: Debug + Model> Debug for Repository<M>[src]

Auto Trait Implementations

impl<M> !RefUnwindSafe for Repository<M>

impl<M> Send for Repository<M> where
    M: Send

impl<M> Sync for Repository<M> where
    M: Sync

impl<M> Unpin for Repository<M> where
    M: Unpin

impl<M> !UnwindSafe for Repository<M>

Blanket Implementations

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

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

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

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

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

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.

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.

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.

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