class Mongo::Database::View
A class representing a view of a database.
@since 2.0.0
Attributes
@return [ Integer ] #batch_size The size of the batch of results
when sending the listCollections command.
@return [ Collection ] collection The command collection.
@return [ Integer ] limit The limit when sending a command.
Public Class Methods
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
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
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
# 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
# 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
# File lib/mongo/database/view.rb, line 109 def initial_query_op Operation::Commands::CollectionsInfo.new(collections_info_spec) end
# File lib/mongo/database/view.rb, line 113 def send_initial_query(server) initial_query_op.execute(server.context) end