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
pub fn stream<'session>(
&mut self,
session: &'session mut ClientSession
) -> SessionCursorStream<'_, 'session, T>
pub fn stream<'session>(
&mut self,
session: &'session mut ClientSession
) -> SessionCursorStream<'_, 'session, T>
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?;
}