Class: Mongo::Cursor
- Inherits:
-
Object
- Object
- Mongo::Cursor
- Extended by:
- Forwardable
- Includes:
- Enumerable, Retryable
- Defined in:
- lib/mongo/cursor.rb,
lib/mongo/cursor/builder/op_get_more.rb,
lib/mongo/cursor/builder/op_kill_cursors.rb,
lib/mongo/cursor/builder/get_more_command.rb,
lib/mongo/cursor/builder/kill_cursors_command.rb
Overview
The Cursor
API is semipublic.
Client-side representation of an iterator over a query result set on the server.
A Cursor
is not created directly by a user. Rather, CollectionView
creates a Cursor
in an Enumerable module method.
Defined Under Namespace
Modules: Builder
Instance Attribute Summary collapse
-
#view ⇒ Collection::View
readonly
View The collection view.
Class Method Summary collapse
-
.finalize(cursor_id, cluster, op_spec, server) ⇒ Proc
Finalize the cursor for garbage collection.
Instance Method Summary collapse
-
#batch_size ⇒ Integer
Get the batch size.
-
#closed? ⇒ true, false
Is the cursor closed?.
-
#collection_name ⇒ String
Get the parsed collection name.
-
#each ⇒ Enumerator
Iterate through documents returned from the query.
-
#id ⇒ Integer
Get the cursor id.
-
#initialize(view, result, server) ⇒ Cursor
constructor
Creates a
Cursor
object. -
#inspect ⇒ String
Get a human-readable string representation of
Cursor
. -
#to_return ⇒ Integer
Get the number of documents to return.
Methods included from Retryable
#read_with_one_retry, #read_with_retry, #write_with_retry
Constructor Details
#initialize(view, result, server) ⇒ Cursor
Creates a Cursor
object.
55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/mongo/cursor.rb', line 55 def initialize(view, result, server) @view = view @server = server @initial_result = result @remaining = limit if limited? @cursor_id = result.cursor_id @coll_name = nil register ObjectSpace.define_finalizer(self, self.class.finalize(result.cursor_id, cluster, kill_cursors_op_spec, server)) end |
Instance Attribute Details
#view ⇒ Collection::View (readonly)
Returns view The collection view.
43 44 45 |
# File 'lib/mongo/cursor.rb', line 43 def view @view end |
Class Method Details
.finalize(cursor_id, cluster, op_spec, server) ⇒ Proc
Finalize the cursor for garbage collection. Schedules this cursor to be included in a killCursors operation executed by the Cluster’s CursorReaper.
84 85 86 |
# File 'lib/mongo/cursor.rb', line 84 def self.finalize(cursor_id, cluster, op_spec, server) proc { cluster.schedule_kill_cursor(cursor_id, op_spec, server) } end |
Instance Method Details
#batch_size ⇒ Integer
Get the batch size.
126 127 128 |
# File 'lib/mongo/cursor.rb', line 126 def batch_size @view.batch_size && @view.batch_size > 0 ? @view.batch_size : limit end |
#closed? ⇒ true, false
Is the cursor closed?
138 139 140 |
# File 'lib/mongo/cursor.rb', line 138 def closed? !more? end |
#collection_name ⇒ String
Get the parsed collection name.
150 151 152 |
# File 'lib/mongo/cursor.rb', line 150 def collection_name @coll_name || collection.name end |
#each ⇒ Enumerator
Iterate through documents returned from the query.
110 111 112 113 114 115 116 |
# File 'lib/mongo/cursor.rb', line 110 def each process(@initial_result).each { |doc| yield doc } while more? return kill_cursors if exhausted? get_more.each { |doc| yield doc } end end |
#id ⇒ Integer
A cursor id of 0 means the cursor was closed on the server.
Get the cursor id.
164 165 166 |
# File 'lib/mongo/cursor.rb', line 164 def id @cursor_id end |
#inspect ⇒ String
Get a human-readable string representation of Cursor
.
96 97 98 |
# File 'lib/mongo/cursor.rb', line 96 def inspect "#<Mongo::Cursor:0x#{object_id} @view=#{@view.inspect}>" end |
#to_return ⇒ Integer
Get the number of documents to return. Used on 3.0 and lower server versions.
177 178 179 |
# File 'lib/mongo/cursor.rb', line 177 def to_return use_limit? ? @remaining : (batch_size || 0) end |