Class Mongo::Index::View
In: lib/mongo/index/view.rb
Parent: Object

A class representing a view of indexes.

@since 2.0.0

Methods

create_many   create_one   drop_all   drop_one   each   get   new  

Included Modules

Enumerable

Constants

KEY = 'key'.freeze   The index key field.

@since 2.0.0

NAME = 'name'.freeze   The index name field.

@since 2.0.0

OPTIONS = { :background => :background, :bits => :bits, :bucket_size => :bucketSize, :default_language => :default_language, :expire_after => :expireAfterSeconds, :expire_after_seconds => :expireAfterSeconds, :key => :key, :language_override => :language_override, :max => :max, :min => :min, :name => :name, :partial_filter_expression => :partialFilterExpression, :sparse => :sparse, :sphere_version => :'2dsphereIndexVersion', :storage_engine => :storageEngine, :text_version => :textIndexVersion, :unique => :unique, :version => :v, :weights => :weights, :collation => :collation   The mappings of Ruby index options to server options.

@since 2.0.0

Attributes

batch_size  [R]  @return [ Integer ] batch_size The size of the batch of results
  when sending the listIndexes command.
collection  [R]  @return [ Collection ] collection The indexes collection.

Public Class methods

Create the new index view.

@example Create the new index view.

  View::Index.new(collection)

@param [ Collection ] collection The collection. @param [ Hash ] options Options for getting a list of indexes.

  Only relevant for when the listIndexes command is used with server
  versions >=2.8.

@option options [ Integer ] :batch_size The batch size for results

  returned from the listIndexes command.

@since 2.0.0

Public Instance methods

Creates multiple indexes on the collection.

@example Create multiple indexes.

  view.create_many([
    { key: { name: 1 }, unique: true },
    { key: { age: -1 }, background: true }
  ])

@note On MongoDB 3.0.0 and higher, the indexes will be created in

  parallel on the server.

@param [ Array<Hash> ] models The index specifications. Each model MUST

  include a :key option.

@return [ Result ] The result of the command.

@since 2.0.0

Creates an index on the collection.

@example Create a unique index on the collection.

  view.create_one({ name: 1 }, { unique: true })

@param [ Hash ] keys A hash of field name/direction pairs. @param [ Hash ] options Options for this index.

@option options [ true, false ] :unique (false) If true, this index will enforce

  a uniqueness constraint on that field.

@option options [ true, false ] :background (false) If true, the index will be built

  in the background (only available for server versions >= 1.3.2 )

@option options [ true, false ] :drop_dups (false) If creating a unique index on

  this collection, this option will keep the first document the database indexes
  and drop all subsequent documents with duplicate values on this field.

@option options [ Integer ] :bucket_size (nil) For use with geoHaystack indexes.

  Number of documents to group together within a certain proximity to a given
  longitude and latitude.

@option options [ Integer ] :max (nil) Specify the max latitude and longitude for

  a geo index.

@option options [ Integer ] :min (nil) Specify the min latitude and longitude for

  a geo index.

@option options [ Hash ] :partial_filter_expression Specify a filter for a partial

  index.

@note Note that the options listed may be subset of those available. See the MongoDB documentation for a full list of supported options by server version.

@return [ Result ] The response.

@since 2.0.0

Drop all indexes on the collection.

@example Drop all indexes on the collection.

  view.drop_all

@return [ Result ] The response.

@since 2.0.0

Drop an index by its name.

@example Drop an index by its name.

  view.drop_one('name_1')

@param [ String ] name The name of the index.

@return [ Result ] The response.

@since 2.0.0

Iterate over all indexes for the collection.

@example Get all the indexes.

  view.each do |index|
    ...
  end

@since 2.0.0

Convenience method for getting index information by a specific name or spec.

@example Get index information by name.

  view.get('name_1')

@example Get index information by the keys.

  view.get(name: 1)

@param [ Hash, String ] keys_or_name The index name or spec.

@return [ Hash ] The index information.

@since 2.0.0

[Validate]