[−][src]Struct mongodm::repository::Repository
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]
&'_ self,
options: impl Into<Option<DropCollectionOptions>>
) -> Result<()>
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]
&'_ self,
pipeline: impl IntoIterator<Item = Document>,
options: impl Into<Option<AggregateOptions>>
) -> Result<ModelCursor<M>>
Runs an aggregation operation.
pub async fn estimated_document_count<'_>(
&'_ self,
options: impl Into<Option<EstimatedDocumentCountOptions>>
) -> Result<i64>
[src]
&'_ self,
options: impl Into<Option<EstimatedDocumentCountOptions>>
) -> Result<i64>
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]
&'_ self,
filter: impl Into<Option<Document>>,
options: impl Into<Option<CountOptions>>
) -> Result<i64>
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]
&'_ self,
query: Document,
options: impl Into<Option<DeleteOptions>>
) -> Result<DeleteResult>
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]
&'_ self,
query: Document,
options: impl Into<Option<DeleteOptions>>
) -> Result<DeleteResult>
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]
&'_ self,
field_name: &'_ str,
filter: impl Into<Option<Document>>,
options: impl Into<Option<DistinctOptions>>
) -> Result<Vec<M>>
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]
&'_ self,
filter: impl Into<Option<Document>>,
options: impl Into<Option<FindOptions>>
) -> Result<ModelCursor<M>>
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]
&'_ self,
filter: impl Into<Option<Document>>,
options: impl Into<Option<FindOneOptions>>
) -> Result<Option<M>>
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]
&'_ self,
filter: Document,
options: impl Into<Option<FindOneAndDeleteOptions>>
) -> Result<Option<M>>
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]
&'_ self,
filter: Document,
replacement: &'_ M,
options: impl Into<Option<FindOneAndReplaceOptions>>
) -> Result<Option<M>>
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]
&'_ self,
filter: Document,
update: impl Into<UpdateModifications>,
options: impl Into<Option<FindOneAndUpdateOptions>>
) -> Result<Option<M>>
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]
&'_ self,
models: impl IntoIterator<Item = M>,
options: impl Into<Option<InsertManyOptions>>
) -> Result<InsertManyResult>
Inserts the models into the collection.
pub async fn insert_one<'_, '_>(
&'_ self,
model: &'_ M,
options: impl Into<Option<InsertOneOptions>>
) -> Result<InsertOneResult>
[src]
&'_ self,
model: &'_ M,
options: impl Into<Option<InsertOneOptions>>
) -> Result<InsertOneResult>
Inserts model M
into the collection.
pub async fn replace_one<'_, '_>(
&'_ self,
query: Document,
replacement: &'_ M,
options: impl Into<Option<ReplaceOptions>>
) -> Result<UpdateResult>
[src]
&'_ self,
query: Document,
replacement: &'_ M,
options: impl Into<Option<ReplaceOptions>>
) -> Result<UpdateResult>
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]
&'_ self,
query: Document,
update: impl Into<UpdateModifications>,
options: impl Into<Option<UpdateOptions>>
) -> Result<UpdateResult>
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]
&'_ self,
query: Document,
update: impl Into<UpdateModifications>,
options: impl Into<Option<UpdateOptions>>
) -> Result<UpdateResult>
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]
fn clone(&self) -> Repository<M>
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[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,
M: Send,
impl<M> Sync for Repository<M> where
M: Sync,
M: Sync,
impl<M> Unpin for Repository<M> where
M: Unpin,
M: Unpin,
impl<M> !UnwindSafe for Repository<M>
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,