class Mongo::Database::View

A class representing a view of a database.

@since 2.0.0

Attributes

batch_size[R]

@return [ Integer ] batch_size The size of the batch of results

when sending the listCollections command.
collection[R]

@return [ Collection ] collection The command collection.

limit[R]

@return [ Integer ] limit The limit when sending a command.

Public Class Methods

new(database) click to toggle source

Create the new database view.

@example Create the new database view.

View::Index.new(database)

@param [ Database ] database The database.

@since 2.0.0

# File lib/mongo/database/view.rb, line 87
def initialize(database)
  @database = database
  @batch_size =  nil
  @limit = nil
  @collection = @database[Database::COMMAND]
end

Public Instance Methods

collection_names(options = {}) click to toggle source

Get all the names of the non system collections in the database.

@example Get the collection names.

database.collection_names

@param [ Hash ] options Options for the listCollections command.

@option options [ Integer ] :batch_size The batch size for results

returned from the listCollections command.

@return [ Array<String> ] The names of all non-system collections.

@since 2.0.0

# File lib/mongo/database/view.rb, line 51
def collection_names(options = {})
  @batch_size = options[:batch_size]
  server = next_primary(false)
  @limit = -1 if server.features.list_collections_enabled?
  session = client.send(:get_session, options)
  collections_info(server, session).collect do |info|
    if server.features.list_collections_enabled?
      info[Database::NAME]
    else
      (info[Database::NAME] &&
        info[Database::NAME].sub("#{@database.name}.", ''))
    end
  end
end
list_collections() click to toggle source

Get info on all the collections in the database.

@example Get info on each collection.

database.list_collections

@return [ Array<Hash> ] Info for each collection in the database.

@since 2.0.5

# File lib/mongo/database/view.rb, line 74
def list_collections
  session = client.send(:get_session)
  collections_info(next_primary(false), session)
end

Private Instance Methods

collections_info(server, session) { |doc| ... } click to toggle source
# File lib/mongo/database/view.rb, line 96
def collections_info(server, session, &block)
  cursor = Cursor.new(self, send_initial_query(server, session), server, session: session)
  cursor.each do |doc|
    yield doc
  end if block_given?
  cursor.to_enum
end
collections_info_spec(session) click to toggle source
# File lib/mongo/database/view.rb, line 104
def collections_info_spec(session)
  { selector: {
      listCollections: 1,
      cursor: batch_size ? { batchSize: batch_size } : {} },
    db_name: @database.name,
    session: session
  }
end
initial_query_op(session) click to toggle source
# File lib/mongo/database/view.rb, line 113
def initial_query_op(session)
  Operation::Commands::CollectionsInfo.new(collections_info_spec(session))
end
send_initial_query(server, session) click to toggle source
# File lib/mongo/database/view.rb, line 117
def send_initial_query(server, session)
  initial_query_op(session).execute(server)
end