class Mongo::Collection::View
Representation of a query and options producing a result set of documents.
A View
can be modified using helpers. Helpers can be chained, as each one returns a View
if arguments are provided.
The query message is sent to the server when a “terminator” is called. For example, when each
is called on a View
, a Cursor
object is created, which then sends the query to the server.
A View
is not created directly by a user. Rather, View
creates a View
when a CRUD operation is called and returns it to the user to interact with.
@note The View
API is semipublic. @api semipublic
Attributes
@return [ Collection
] The Collection
to query.
@return [ Hash ] The query filter.
@return [ Hash ] The query filter.
Public Class Methods
Source
# File lib/mongo/collection/view.rb, line 150 def initialize(collection, filter = {}, options = {}) validate_doc!(filter) @collection = collection parse_parameters!(BSON::Document.new(filter), BSON::Document.new(options)) end
Creates a new View
.
@example Find all users named Emily.
View.new(collection, {:name => 'Emily'})
@example Find all users named Emily skipping 5 and returning 10.
View.new(collection, {:name => 'Emily'}, :skip => 5, :limit => 10)
@example Find all users named Emily using a specific read preference.
View.new(collection, {:name => 'Emily'}, :read => :secondary_preferred)
@param [ Collection
] collection The Collection
to query. @param [ Hash ] filter The query filter. @param [ Hash ] options The additional query options.
@option options [ true, false ] :allow_disk_use When set to true, the
server can write temporary data to disk while executing the find operation. This option is only available on MongoDB server versions 4.4 and newer.
@option options [ Integer ] :batch_size The number of documents to
return in each response from MongoDB.
@option options [ Hash ] :collation The collation to use. @option options [ String ] :comment Associate a comment with the query. @option options [ Hash ] :explain Execute an explain with the provided
explain options (known options are :verbose and :verbosity) rather than a find.
@option options [ Hash ] :hint Override the default index selection and
force MongoDB to use a specific index for the query.
@option options [ Integer ] :limit Max number of documents to return. @option options [ Integer ] :max_scan Constrain the query to only scan
the specified number of documents. Use to prevent queries from running for too long. Deprecated as of MongoDB server version 4.0.
@option options [ Hash ] :projection The fields to include or exclude
in the returned documents.
@option options [ Hash ] :read The read preference to use for the
query. If none is provided, the collection's default read preference is used.
@option options [ true | false ] :show_disk_loc Return disk location
info as a field in each doc.
@option options [ Integer ] :skip The number of documents to skip. @option options [ true | false ] :snapshot Prevents returning a
document more than once. Deprecated as of MongoDB server version 4.0.
@option options [ Hash ] :sort The key and direction pairs used to sort
the results.
@since 2.0.0
Public Instance Methods
Source
# File lib/mongo/collection/view.rb, line 83 def ==(other) return false unless other.is_a?(View) collection == other.collection && filter == other.filter && options == other.options end
Compare two View
objects.
@example Compare the view with another object.
view == other
@return [ true, false ] Equal if collection, filter, and options of two
+View+ match.
@since 2.0.0
Source
# File lib/mongo/collection/view.rb, line 100 def hash [ collection.namespace, options.hash, filter.hash ].hash end
A hash value for the View
composed of the collection namespace, hash of the options and hash of the filter.
@example Get the hash value.
view.hash
@return [ Integer ] A hash value of the View
object.
@since 2.0.0
Source
# File lib/mongo/collection/view.rb, line 164 def inspect "#<Mongo::Collection::View:0x#{object_id} namespace='#{collection.namespace}'" + " @filter=#{filter.to_s} @options=#{options.to_s}>" end
Get a human-readable string representation of View
.
@example Get the inspection.
view.inspect
@return [ String ] A string representation of a View
instance.
@since 2.0.0
Source
# File lib/mongo/collection/view.rb, line 177 def write_concern WriteConcern.get(options[:write_concern] || options[:write] || collection.write_concern) end
Get the write concern on this View
.
@example Get the write concern.
view.write_concern
@return [ Mongo::WriteConcern
] The write concern.
@since 2.0.0
Private Instance Methods
Source
# File lib/mongo/collection/view.rb, line 200 def apply_collation!(doc, server, opts = {}) if coll = doc[:collation] || opts[:collation] || opts['collation'] || collation validate_collation!(server, coll) doc[:collation] = coll end end
Source
# File lib/mongo/collection/view.rb, line 183 def initialize_copy(other) @collection = other.collection @options = other.options.dup @filter = other.filter.dup end
Source
# File lib/mongo/collection/view.rb, line 196 def new(options) View.new(collection, filter, options) end
Source
# File lib/mongo/collection/view.rb, line 189 def parse_parameters!(filter, options) query = filter.delete(QUERY) modifiers = (filter || {}).merge(options.delete(MODIFIERS) || {}) @filter = (query || filter).freeze @options = Builder::Modifiers.map_driver_options(modifiers).merge!(options).freeze end
Source
# File lib/mongo/collection/view.rb, line 207 def validate_collation!(server, coll) if coll && !server.with_connection { |connection| connection.features }.collation_enabled? raise Error::UnsupportedCollation.new end end
Source
# File lib/mongo/collection/view.rb, line 215 def with_session(opts = {}, &block) client.send(:with_session, @options.merge(opts), &block) end