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 85
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?
  collections_info(server).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 73
def list_collections
  collections_info(next_primary(false))
end

Private Instance Methods

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