Class: Mongo::Database::View

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Enumerable, Retryable
Defined in:
build/ruby-driver-v2.19/lib/mongo/database/view.rb

Overview

A class representing a view of a database.

Since:

  • 2.0.0

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Retryable

#read_worker, #select_server, #write_worker

Constructor Details

#initialize(database) ⇒ View

Create the new database view.

Examples:

Create the new database view.

View::Index.new(database)

Parameters:

Since:

  • 2.0.0



127
128
129
130
131
132
# File 'build/ruby-driver-v2.19/lib/mongo/database/view.rb', line 127

def initialize(database)
  @database = database
  @batch_size =  nil
  @limit = nil
  @collection = @database[Database::COMMAND]
end

Instance Attribute Details

#batch_sizeInteger (readonly)

Returns batch_size The size of the batch of results when sending the listCollections command.

Returns:

  • (Integer)

    batch_size The size of the batch of results when sending the listCollections command.

Since:

  • 2.0.0



36
37
38
# File 'build/ruby-driver-v2.19/lib/mongo/database/view.rb', line 36

def batch_size
  @batch_size
end

#collectionCollection (readonly)

Returns collection The command collection.

Returns:

  • (Collection)

    collection The command collection.

Since:

  • 2.0.0



42
43
44
# File 'build/ruby-driver-v2.19/lib/mongo/database/view.rb', line 42

def collection
  @collection
end

#databaseObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Since:

  • 2.0.0



135
136
137
# File 'build/ruby-driver-v2.19/lib/mongo/database/view.rb', line 135

def database
  @database
end

#limitInteger (readonly)

Returns limit The limit when sending a command.

Returns:

  • (Integer)

    limit The limit when sending a command.

Since:

  • 2.0.0



39
40
41
# File 'build/ruby-driver-v2.19/lib/mongo/database/view.rb', line 39

def limit
  @limit
end

Instance Method Details

#aggregate(pipeline, options = {}) ⇒ Collection::View::Aggregation

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Execute an aggregation on the database view.

Examples:

Aggregate documents.

view.aggregate([
  { "$listLocalSessions" => {} }
])

Parameters:

  • pipeline (Array<Hash>)

    The aggregation pipeline.

  • options (Hash) (defaults to: {})

    The aggregation options.

Returns:

Since:

  • 2.10.0



151
152
153
# File 'build/ruby-driver-v2.19/lib/mongo/database/view.rb', line 151

def aggregate(pipeline, options = {})
  Collection::View::Aggregation.new(self, pipeline, options)
end

#collection_names(options = {}) ⇒ Array<String>

Note:

The set of returned collection names depends on the version of MongoDB server that fulfills the request.

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

Parameters:

  • options (Hash) (defaults to: {})

    Options for the listCollections command.

Options Hash (options):

  • :batch_size (Integer)

    The batch size for results returned from the listCollections command.

  • :filter (Hash)

    A filter on the collections returned.

  • :authorized_collections (true, false)

    A flag, when set to true, that allows a user without the required privilege to run the command when access control is enforced.

  • :comment (Object)

    A user-provided comment to attach to this command.

    See mongodb.com/docs/manual/reference/command/listCollections/ for more information and usage.

  • :session (Session)

    The session to use.

Returns:

  • (Array<String>)

    The names of all non-system collections.

Since:

  • 2.0.0



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'build/ruby-driver-v2.19/lib/mongo/database/view.rb', line 67

def collection_names(options = {})
  @batch_size = options[:batch_size]
  session = client.send(:get_session, options)
  cursor = read_with_retry_cursor(session, ServerSelector.primary, self) do |server|
    send_initial_query(server, session, options.merge(name_only: true))
  end
  cursor.map do |info|
    if cursor.initial_result.connection_description.features.list_collections_enabled?
      info['name']
    else
      (info['name'] &&
        info['name'].sub("#{@database.name}.", ''))
    end
  end.reject do |name|
    name.start_with?('system.') || name.include?('$')
  end
end

#list_collections(options = {}) ⇒ Array<Hash>

Note:

The set of collections returned, and the schema of the information hash per collection, depends on the MongoDB server version that fulfills the request.

Get info on all the collections in the database.

Examples:

Get info on each collection.

database.list_collections

Parameters:

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :filter (Hash)

    A filter on the collections returned.

  • :name_only (true, false)

    Indicates whether command should return just collection/view names and type or return both the name and other information

  • :authorized_collections (true, false)

    A flag, when set to true and used with nameOnly: true, that allows a user without the required privilege to run the command when access control is enforced

    See mongodb.com/docs/manual/reference/command/listCollections/ for more information and usage.

  • :session (Session)

    The session to use.

  • :deserialize_as_bson (Boolean)

    Whether to deserialize this message using BSON types instead of native Ruby types wherever possible.

Returns:

  • (Array<Hash>)

    Info for each collection in the database.

Since:

  • 2.0.5



114
115
116
117
# File 'build/ruby-driver-v2.19/lib/mongo/database/view.rb', line 114

def list_collections(options = {})
  session = client.send(:get_session, options)
  collections_info(session, ServerSelector.primary, options)
end