Struct mongodb::SessionCursor[][src]

pub struct SessionCursor<T> where
    T: DeserializeOwned + Unpin
{ /* fields omitted */ }
Expand description

A SessionCursor is a cursor that was created with a ClientSession that must be iterated using one. To iterate, use SessionCursor::next or retrieve a SessionCursorStream using SessionCursor::stream:

// iterate using next()
let mut cursor = coll.find_with_session(None, None, &mut session).await?;
while let Some(doc) = cursor.next(&mut session).await.transpose()? {
    println!("{}", doc)
}

// iterate using `Stream`:
use futures::stream::TryStreamExt;

let mut cursor = coll.find_with_session(None, None, &mut session).await?;
let results: Vec<_> = cursor.stream(&mut session).try_collect().await?;

Implementations

Retrieves a SessionCursorStream to iterate this cursor. The session provided must be the same session used to create the cursor.

Note that the borrow checker will not allow the session to be reused in between iterations of this stream. In order to do that, either use SessionCursor::next instead or drop the stream before using the session.

use futures::stream::TryStreamExt;

// iterate over the results
let mut cursor = coll.find_with_session(doc! { "x": 1 }, None, &mut session).await?;
while let Some(doc) = cursor.stream(&mut session).try_next().await? {
    println!("{}", doc);
}

// collect the results
let mut cursor1 = coll.find_with_session(doc! { "x": 1 }, None, &mut session).await?;
let v: Vec<Document> = cursor1.stream(&mut session).try_collect().await?;

// use session between iterations
let mut cursor2 = coll.find_with_session(doc! { "x": 1 }, None, &mut session).await?;
loop {
    let doc = match cursor2.stream(&mut session).try_next().await? {
        Some(d) => d,
        None => break,
    };
    other_coll.insert_one_with_session(doc, None, &mut session).await?;
}

Retrieve the next result from the cursor. The session provided must be the same session used to create the cursor.

Use this method when the session needs to be used again between iterations or when the added functionality of Stream is not needed.

let mut cursor = coll.find_with_session(doc! { "x": 1 }, None, &mut session).await?;
while let Some(doc) = cursor.next(&mut session).await.transpose()? {
    other_coll.insert_one_with_session(doc, None, &mut session).await?;
}

Trait Implementations

Formats the value using the given formatter. Read more

Executes the destructor for this type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

Should always be Self

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.