Class: XGen::Mongo::Driver::Collection

Inherits:
Object
  • Object
show all
Defined in:
lib/mongo/collection.rb

Overview

A named collection of records in a database.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(db, name) ⇒ Collection

Returns a new instance of Collection.



28
29
30
31
# File 'lib/mongo/collection.rb', line 28

def initialize(db, name)
  @db = db
  @name = name
end

Instance Attribute Details

#dbObject (readonly)

Returns the value of attribute db.



26
27
28
# File 'lib/mongo/collection.rb', line 26

def db
  @db
end

#hintObject

Returns the value of attribute hint.



26
27
28
# File 'lib/mongo/collection.rb', line 26

def hint
  @hint
end

#nameObject (readonly)

Returns the value of attribute name.



26
27
28
# File 'lib/mongo/collection.rb', line 26

def name
  @name
end

Instance Method Details

#clearObject

Remove all records.



85
86
87
# File 'lib/mongo/collection.rb', line 85

def clear
  remove({})
end

#count(selector = {}) ⇒ Object

Return the number of records that match selector. If selector is nil or an empty hash, returns the count of all records.



151
152
153
# File 'lib/mongo/collection.rb', line 151

def count(selector={})
  @db.count(@name, selector || {})
end

#create_index(name, *fields) ⇒ Object

Create a new index named index_name. fields should be an array of field names.



110
111
112
# File 'lib/mongo/collection.rb', line 110

def create_index(name, *fields)
  @db.create_index(@name, name, fields)
end

#dropObject

Drop the entire collection. USE WITH CAUTION.



126
127
128
# File 'lib/mongo/collection.rb', line 126

def drop
  @db.drop_collection(@name)
end

#drop_index(name) ⇒ Object

Drop index name.



115
116
117
# File 'lib/mongo/collection.rb', line 115

def drop_index(name)
  @db.drop_index(@name, name)
end

#drop_indexesObject

Drop all indexes.



120
121
122
123
# File 'lib/mongo/collection.rb', line 120

def drop_indexes
  # just need to call drop indexes with no args; will drop them all
  @db.drop_index(@name, '*')
end

#find(selector = {}, options = {}) ⇒ Object

Return records that match a selector hash. See Mongo docs for details.

Options:

:fields

Array of collection field names; only those will be returned (plus _id if defined)

:offset

Start at this record when returning records

:limit

Maximum number of records to return

:sort

Either hash of field names as keys and 1/-1 as values; 1 == ascending, -1 == descending, or array of field names (all assumed to be sorted in ascending order).

:hint

See #hint. This option overrides the collection-wide value.

Raises:

  • (RuntimeError)


52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/mongo/collection.rb', line 52

def find(selector={}, options={})
  fields = options.delete(:fields)
  fields = nil if fields && fields.empty?
  offset = options.delete(:offset) || 0
  limit = options.delete(:limit) || 0
  sort = options.delete(:sort)
  hint = options.delete(:hint)
  if hint
    hint = normalize_hint_fields(hint)
  else
    hint = @hint        # assumed to be normalized already
  end
  raise RuntimeError, "Unknown options [#{options.inspect}]" unless options.empty?
  @db.query(self, Query.new(selector, fields, offset, limit, sort, hint))
end

#index_informationObject

Return an array of hashes, one for each index. Each hash contains:

:name

Index name

:keys

Hash whose keys are the names of the fields that make up the key and values are integers.

:ns

Namespace; same as this collection’s name.



138
139
140
# File 'lib/mongo/collection.rb', line 138

def index_information
  @db.index_information(@name)
end

#insert(*objects) ⇒ Object Also known as: <<

Insert objects, which are hashes. “<<” is aliased to this method. Returns either the single inserted object or a new array containing objects. The object(s) may have been modified by the database’s PK factory, if it has one.



72
73
74
75
76
# File 'lib/mongo/collection.rb', line 72

def insert(*objects)
  objects = objects.first if objects.size == 1 && objects.first.is_a?(Array)
  res = @db.insert_into_db(@name, objects)
  res.size > 1 ? res : res.first
end

#modify(selector, modifier_obj) ⇒ Object

Update records that match selector by applying obj as an update. Both selector and modifier_obj are required.



102
103
104
105
106
# File 'lib/mongo/collection.rb', line 102

def modify(selector, modifier_obj)
  raise "no object" unless modifier_obj
  raise "no selector" unless selector
  @db.modify_in_db(@name, selector, modifier_obj)
end

#optionsObject

Return a hash containing options that apply to this collection. ‘create’ will be the collection name. For the other possible keys and values, see DB#create_collection.



145
146
147
# File 'lib/mongo/collection.rb', line 145

def options
  @db.collections_info(@name).next_object()['options']
end

#remove(selector = {}) ⇒ Object

Remove the records that match selector.



80
81
82
# File 'lib/mongo/collection.rb', line 80

def remove(selector={})
  @db.remove_from_db(@name, selector)
end

#replace(selector, obj) ⇒ Object

Update records that match selector by applying obj as an update.



96
97
98
# File 'lib/mongo/collection.rb', line 96

def replace(selector, obj)
  @db.replace_in_db(@name, selector, obj)
end

#repsert(selector, obj) ⇒ Object

Update records that match selector by applying obj as an update. If no match, inserts (???).



91
92
93
# File 'lib/mongo/collection.rb', line 91

def repsert(selector, obj)
  @db.repsert_in_db(@name, selector, obj)
end