cursor.tailable()
On this page
Definition
cursor.tailable()
Important
mongosh Method
This is a
mongosh
method. This is not the documentation forNode.js
or other programming language specific driver methods.In most cases,
mongosh
methods work the same way as the legacymongo
shell methods. However, some legacy methods are unavailable inmongosh
.For the legacy
mongo
shell documentation, refer to the documentation for the corresponding MongoDB Server release:For MongoDB API drivers, refer to the language specific MongoDB driver documentation.
Marks the cursor as tailable keeping it open even when the client exhausts all results.
For use against a capped collection only. Using
tailable()
against a non-capped collection returns an error.cursor.tailable()
uses the following syntax:cursor.tailable( { awaitData : <boolean> } ) ~cursor.tailable()
has the following parameter:ParameterTypeDescriptionawaitData
booleanOptional. For use with
DBQuery.Option.tailable
. Sets the cursor to block the query thread when no data is available and await data for a set time instead of immediately returning no data. The cursor returns no data only if the timeout expires.By default, if
maxTimeMS
is set on the command that created the cursor, then the timeout forawaitData
is the remaining time. Otherwise, the default timeout is 1000 milliseconds.You can set a timeout when running
getMore
on a cursor withawaitData
enabled.Defaults to
false
.Returns: The cursor that ~cursor.tailable()
is attached to.
Compatibility
This method is available in deployments hosted in the following environments:
MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud
Note
This command is supported in all MongoDB Atlas clusters. For information on Atlas support for all commands, see Unsupported Commands.
MongoDB Enterprise: The subscription-based, self-managed version of MongoDB
MongoDB Community: The source-available, free-to-use, and self-managed version of MongoDB
Behavior
A tailable cursor performs a collection scan over a capped collection. It remains open even after reaching the end of the collection. Applications can continue to iterate the tailable cursor as new data is inserted into the collection.
If awaitData
is true
, when the cursor reaches the end of
the capped collection, mongod
blocks the query thread
for the timeout interval and waits for new data to arrive. When new
data is inserted into the capped collection, mongod
signals the
blocked thread to wake and return the next batch to the client.