Class: Mongo::Database::View
- Inherits:
-
Object
- Object
- Mongo::Database::View
- Extended by:
- Forwardable
- Includes:
- Enumerable, Cursor::NonTailable, CursorHost, Retryable
- Defined in:
- lib/mongo/database/view.rb
Overview
A class representing a view of a database.
Instance Attribute Summary collapse
-
#batch_size ⇒ Integer
readonly
Batch_size The size of the batch of results when sending the listCollections command.
-
#collection ⇒ Collection
readonly
Collection The command collection.
- #database ⇒ Object readonly private
-
#limit ⇒ Integer
readonly
Limit The limit when sending a command.
-
#operation_timeout_ms ⇒ Integer | nil | The timeout_ms value that was passed as an option to the view.
readonly
private
Integer | nil | The timeout_ms value that was passed as an option to the view.
Attributes included from CursorHost
Instance Method Summary collapse
-
#aggregate(pipeline, options = {}) ⇒ Collection::View::Aggregation
private
Execute an aggregation on the database view.
-
#collection_names(options = {}) ⇒ Array<String>
Get all the names of the non-system collections in the database.
-
#initialize(database, options = {}) ⇒ View
constructor
Create the new database view.
-
#list_collections(options = {}) ⇒ Array<Hash>
Get info on all the collections in the database.
-
#operation_timeouts(opts = {}) ⇒ Hash
private
Timeout_ms value set on the operation level (if any).
-
#timeout_ms ⇒ Integer | nil
The timeout_ms value to use for this operation; either specified as an option to the view, or inherited from the database.
Methods included from Cursor::NonTailable
Methods included from CursorHost
Methods included from Retryable
#read_worker, #select_server, #write_worker
Constructor Details
#initialize(database, options = {}) ⇒ View
Create the new database view.
149 150 151 152 153 154 155 156 157 158 |
# File 'lib/mongo/database/view.rb', line 149 def initialize(database, = {}) @database = database @operation_timeout_ms = .delete(:timeout_ms) validate_timeout_mode!() @batch_size = nil @limit = nil @collection = @database[Database::COMMAND] end |
Instance Attribute Details
#batch_size ⇒ Integer (readonly)
Returns batch_size The size of the batch of results when sending the listCollections command.
40 41 42 |
# File 'lib/mongo/database/view.rb', line 40 def batch_size @batch_size end |
#collection ⇒ Collection (readonly)
Returns collection The command collection.
46 47 48 |
# File 'lib/mongo/database/view.rb', line 46 def collection @collection end |
#database ⇒ Object (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.
161 162 163 |
# File 'lib/mongo/database/view.rb', line 161 def database @database end |
#limit ⇒ Integer (readonly)
Returns limit The limit when sending a command.
43 44 45 |
# File 'lib/mongo/database/view.rb', line 43 def limit @limit end |
#operation_timeout_ms ⇒ Integer | nil | The timeout_ms value that was passed as an option to the view. (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.
Returns Integer | nil | The timeout_ms value that was passed as an option to the view.
167 168 169 |
# File 'lib/mongo/database/view.rb', line 167 def operation_timeout_ms @operation_timeout_ms 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.
183 184 185 |
# File 'lib/mongo/database/view.rb', line 183 def aggregate(pipeline, = {}) Collection::View::Aggregation.new(self, pipeline, ) end |
#collection_names(options = {}) ⇒ Array<String>
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.
See https://mongodb.com/docs/manual/reference/command/listCollections/
for more information and usage.
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/mongo/database/view.rb', line 75 def collection_names( = {}) @batch_size = [:batch_size] session = client.get_session() context = Operation::Context.new( client: client, session: session, operation_timeouts: operation_timeouts() ) cursor = read_with_retry_cursor(session, ServerSelector.primary, self, context: context) do |server| send_initial_query(server, session, context, .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>
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.
127 128 129 130 |
# File 'lib/mongo/database/view.rb', line 127 def list_collections( = {}) session = client.get_session() collections_info(session, ServerSelector.primary, ) end |
#operation_timeouts(opts = {}) ⇒ Hash
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.
Returns timeout_ms value set on the operation level (if any).
198 199 200 201 202 203 204 205 206 |
# File 'lib/mongo/database/view.rb', line 198 def operation_timeouts(opts = {}) {}.tap do |result| if opts[:timeout_ms] || operation_timeout_ms result[:operation_timeout_ms] = opts.delete(:timeout_ms) || operation_timeout_ms else result[:inherited_timeout_ms] = database.timeout_ms end end end |
#timeout_ms ⇒ Integer | nil
The timeout_ms value to use for this operation; either specified as an option to the view, or inherited from the database.
191 192 193 |
# File 'lib/mongo/database/view.rb', line 191 def timeout_ms operation_timeout_ms || database.timeout_ms end |