ClientSession
public final class ClientSessionA MongoDB client session. This class represents a logical session used for ordering sequential operations.
To create a client session, use startSession or withSession on a MongoClient.
If causalConsistency is not set to false when starting a session, read and write operations that use the session
 will be provided causal consistency guarantees depending on the read and write concerns used. Using “majority”
 read and write preferences will provide the full set of guarantees. See
 https://docs.mongodb.com/manual/core/read-isolation-consistency-recency/#sessions for more details.
e.g.
   let opts = MongoCollectionOptions(readConcern: .majority, writeConcern: .majority)
   let collection = database.collection("mycoll", options: opts)
   let futureCount = client.withSession { session in
       collection.insertOne(["x": 1], session: session).flatMap { _ in
           collection.countDocuments(session: session)
       }
   }
To disable causal consistency, set causalConsistency to false in the ClientSessionOptions passed in to either
 withSession or startSession.
See also
- 
                  
                  The client used to start this session. DeclarationSwift public let client: MongoClient
- 
                  
                  The most recent cluster time seen by this session. This value will be nil if either of the following are true: - No operations have been executed using this session and advanceClusterTimehas not been called.
- This session has been ended.
 DeclarationSwift public var clusterTime: BSONDocument? { get }
- No operations have been executed using this session and 
- 
                  
                  The operation time of the most recent operation performed using this session. This value will be nil if either of the following are true: - No operations have been performed using this session and advanceOperationTimehas not been called.
- This session has been ended.
 DeclarationSwift public var operationTime: BSONTimestamp? { get }
- No operations have been performed using this session and 
- 
                  
                  The options used to start this session. DeclarationSwift public let options: ClientSessionOptions?
- 
                  
                  Ends this ClientSession. Call this method when you are finished using the session. You must ensure that all operations using this session have completed before calling this. The returned future must be fulfilled before this session’s parentMongoClientis closed.DeclarationSwift public func end() -> EventLoopFuture<Void>
- 
                  
                  Advances the clusterTime for this session to the given time, if it is greater than the current clusterTime. If the session has been ended, or if the provided clusterTime is less than the current clusterTime, this method has no effect. DeclarationSwift public func advanceClusterTime(to clusterTime: BSONDocument)ParametersclusterTimeThe session’s new cluster time, as a BSONDocumentlike["cluster time": Timestamp(...)]
- 
                  
                  Advances the operationTime for this session to the given time if it is greater than the current operationTime. If the session has been ended, or if the provided operationTime is less than the current operationTime, this method has no effect. DeclarationSwift public func advanceOperationTime(to operationTime: BSONTimestamp)ParametersoperationTimeThe session’s new operationTime 
- 
                  
                  Starts a multi-document transaction for all subsequent operations in this session. Any options provided in optionswill override the default transaction options for this session and any options inherited fromMongoClient.Operations executed as part of the transaction will use the options specified on the transaction, and those options cannot be overridden at a per-operation level. Any options that overlap with the transaction options which can be specified at a per operation level (e.g. write concern) will be ignored if specified. This includes options specified at the database or collection level on the object used to execute an operation. The transaction must be completed with commitTransactionorabortTransaction. An in-progress transaction is automatically aborted whenClientSession.end()is called.DeclarationSwift public func startTransaction(options: TransactionOptions? = nil) -> EventLoopFuture<Void>ParametersoptionsThe options to use when starting this transaction Return ValueAn EventLoopFuture<Void>that succeeds whenstartTransactionis successful.If the future fails, the error is likely one of the following: - MongoError.CommandErrorif an error occurs that prevents the command from executing.
- MongoError.LogicErrorif the session already has an in-progress transaction.
- MongoError.LogicErrorif- startTransactionis called on an ended session.
 
- 
                  
                  Commits a multi-document transaction for this session. Server and network errors are not ignored. DeclarationSwift public func commitTransaction() -> EventLoopFuture<Void>Return ValueAn EventLoopFuture<Void>that succeeds whencommitTransactionis successful.If the future fails, the error is likely one of the following: - MongoError.CommandErrorif an error occurs that prevents the command from executing.
- MongoError.LogicErrorif the session has no in-progress transaction.
- MongoError.LogicErrorif- commitTransactionis called on an ended session.
 
- 
                  
                  Aborts a multi-document transaction for this session. Server and network errors are ignored. DeclarationSwift public func abortTransaction() -> EventLoopFuture<Void>Return ValueAn EventLoopFuture<Void>that succeeds whenabortTransactionis successful.If the future fails, the error is likely one of the following: - MongoError.LogicErrorif the session has no in-progress transaction.
- MongoError.LogicErrorif- abortTransactionis called on an ended session.
 
 View on GitHub
            View on GitHub
           Install in Dash
            Install in Dash
           ClientSession Class Reference
      ClientSession Class Reference