Module: Mongo::Collection::View::Iterable

Included in:
Mongo::Collection::View, Aggregation
Defined in:
lib/mongo/collection/view/iterable.rb

Overview

Defines iteration related behavior for collection views, including cursor instantiation.

Since:

  • 2.0.0

Instance Method Summary collapse

Instance Method Details

#close_querynil Also known as: kill_cursors

Note:

This method propagates any errors that occur when closing the server-side cursor.

Cleans up resources associated with this query.

If there is a server cursor associated with this query, it is closed by sending a KillCursors command to the server.

Returns:

  • (nil)

    Always nil.

Raises:

Since:

  • 2.1.0



71
72
73
74
75
# File 'lib/mongo/collection/view/iterable.rb', line 71

def close_query
  if @cursor
    @cursor.close
  end
end

#each {|Each| ... } ⇒ Enumerator

Iterate through documents returned by a query with this View.

Examples:

Iterate through the result of the view.

view.each do |document|
  p document
end

Yield Parameters:

  • Each (Hash)

    matching document.

Returns:

  • (Enumerator)

    The enumerator.

Since:

  • 2.0.0



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/mongo/collection/view/iterable.rb', line 37

def each
  @cursor = nil
  session = client.send(:get_session, @options)
  @cursor = if respond_to?(:write?, true) && write?
    server = server_selector.select_server(cluster, nil, session)
    result = send_initial_query(server, session)
    Cursor.new(view, result, server, session: session)
  else
    read_with_retry_cursor(session, server_selector, view) do |server|
      send_initial_query(server, session)
    end
  end
  if block_given?
    @cursor.each do |doc|
      yield doc
    end
  else
    @cursor.to_enum
  end
end