Module: Mongoid::Criterion::Inclusion
- Included in:
- Mongoid::Criteria
- Defined in:
- lib/mongoid/criterion/inclusion.rb
Instance Method Summary collapse
-
#all(attributes = {}) ⇒ Criteria
(also: #all_in)
Adds a criterion to the
Criteria
that specifies values that must all be matched in order to return results. -
#also_in(attributes = {}) ⇒ Criteria
Adds a criterion to the
Criteria
that specifies values where any can be matched in order to return results. -
#and(selector = nil) ⇒ Criteria
Adds a criterion to the
Criteria
that specifies values that must be matched in order to return results. -
#any_of(*args) ⇒ Criteria
(also: #or)
Adds a criterion to the
Criteria
that specifies a set of expressions to match if any of them return true. -
#find(*args) ⇒ Document, Criteria
Find the matchind document in the criteria, either based on id or conditions.
-
#in(attributes = {}) ⇒ Criteria
(also: #any_in)
Adds a criterion to the
Criteria
that specifies values where any can be matched in order to return results. -
#near(attributes = {}) ⇒ Criteria
Adds a criterion to the
Criteria
that specifies values to do geospacial searches by. -
#where(selector = nil) ⇒ Criteria
Adds a criterion to the
Criteria
that specifies values that must be matched in order to return results.
Instance Method Details
#all(attributes = {}) ⇒ Criteria Also known as: all_in
Adds a criterion to the Criteria
that specifies values that must all be matched in order to return results. Similar to an “in” clause but the underlying conditional logic is an “AND” and not an “OR”. The MongoDB conditional operator that will be used is “$all”.
18 19 20 |
# File 'lib/mongoid/criterion/inclusion.rb', line 18 def all(attributes = {}) update_selector(attributes, "$all") end |
#also_in(attributes = {}) ⇒ Criteria
Adds a criterion to the Criteria
that specifies values where any can be matched in order to return results. This is similar to an SQL “IN” clause. The MongoDB conditional operator that will be used is “$in”. Any previously matching “$in” arrays will be unioned with new arguments.
35 36 37 |
# File 'lib/mongoid/criterion/inclusion.rb', line 35 def also_in(attributes = {}) update_selector(attributes, "$in") end |
#and(selector = nil) ⇒ Criteria
Adds a criterion to the Criteria
that specifies values that must be matched in order to return results. This is similar to a SQL “WHERE” clause. This is the actual selector that will be provided to MongoDB, similar to the Javascript object that is used when performing a find() in the MongoDB console.
51 52 53 |
# File 'lib/mongoid/criterion/inclusion.rb', line 51 def and(selector = nil) where(selector) end |
#any_of(*args) ⇒ Criteria Also known as: or
Adds a criterion to the Criteria
that specifies a set of expressions to match if any of them return true. This is a $or query in MongoDB and is similar to a SQL OR. This is named #any_of and aliased “or” for readability.
66 67 68 69 70 71 72 73 |
# File 'lib/mongoid/criterion/inclusion.rb', line 66 def any_of(*args) clone.tap do |crit| criterion = @selector["$or"] || [] converted = BSON::ObjectId.convert(klass, args.flatten) = converted.collect(&:expand_complex_criteria) crit.selector["$or"] = criterion.concat() end end |
#find(*args) ⇒ Document, Criteria
Durran: DRY up duplicated code in a few places.
Find the matchind document in the criteria, either based on id or conditions.
101 102 103 104 105 106 107 108 109 110 |
# File 'lib/mongoid/criterion/inclusion.rb', line 101 def find(*args) type, crit = search(*args) case type when :first then crit.one when :last then crit.last when :ids then execute_or_raise(args, crit) else crit end end |
#in(attributes = {}) ⇒ Criteria Also known as: any_in
Adds a criterion to the Criteria
that specifies values where any can be matched in order to return results. This is similar to an SQL “IN” clause. The MongoDB conditional operator that will be used is “$in”.
123 124 125 |
# File 'lib/mongoid/criterion/inclusion.rb', line 123 def in(attributes = {}) update_selector(attributes, "$in", :&) end |
#near(attributes = {}) ⇒ Criteria
Adds a criterion to the Criteria
that specifies values to do geospacial searches by. The field must be indexed with the “2d” option.
137 138 139 |
# File 'lib/mongoid/criterion/inclusion.rb', line 137 def near(attributes = {}) update_selector(attributes, "$near") end |
#where(selector = nil) ⇒ Criteria
Adds a criterion to the Criteria
that specifies values that must be matched in order to return results. This is similar to a SQL “WHERE” clause. This is the actual selector that will be provided to MongoDB, similar to the Javascript object that is used when performing a find() in the MongoDB console.
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 |
# File 'lib/mongoid/criterion/inclusion.rb', line 153 def where(selector = nil) clone.tap do |crit| selector = case selector when String then {"$where" => selector} else BSON::ObjectId.convert(klass, selector || {}, false). end selector.each_pair do |key, value| if crit.selector.has_key?(key) && crit.selector[key].respond_to?(:merge!) crit.selector[key] = crit.selector[key].merge!(value) do |key, old, new| key == '$in' ? old & new : new end else crit.selector[key] = value end end end end |