mongodb/mongoid · error · NotImplementedError
Ruby does not allow same symbol operator with different valu
Error message
Ruby does not allow same symbol operator with different values
What it means
Error "Ruby does not allow same symbol operator with different values" thrown in mongodb/mongoid.
Source
Thrown at lib/mongoid/criteria/queryable/mergeable.rb:273
private def _mongoid_expand_keys(expr)
raise ArgumentError, 'Argument must be a Hash' unless expr.is_a?(Hash)
result = BSON::Document.new
expr.each do |field, value|
field.__expr_part__(value.__expand_complex__, negating?).each do |k, v|
if existing = result[k]
if existing.is_a?(Hash)
# Existing value is an operator.
# If new value is also an operator, ensure there are no
# conflicts and add
if v.is_a?(Hash)
# The new value is also an operator.
# If there are no conflicts, combine the hashes, otherwise
# add new conditions to top level with $and.
if (v.keys & existing.keys).empty?
existing.update(v)
else
raise NotImplementedError, 'Ruby does not allow same symbol operator with different values'
result['$and'] ||= []
result['$and'] << { k => v }
end
else
# The new value is a simple value.
# Transform the implicit equality to either $eq or $regexp
# depending on the type of the argument. See
# https://www.mongodb.com/docs/manual/reference/operator/query/eq/#std-label-eq-usage-examples
# for the description of relevant server behavior.
op = case v
when Regexp, BSON::Regexp::Raw
'$regex'
else
'$eq'
end
# If there isn't an $eq/$regex operator already in the
# query, transform the new value into an operator
# expression and add it to the existing hash. OtherwiseView on GitHub (pinned to 0da0e23d71)
When it happens
Trigger: Thrown at lib/mongoid/criteria/queryable/mergeable.rb:273 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of mongodb/mongoid@0da0e23d71 (2026-08-23).
Data as JSON: /api/errors/e9ae710ffba02268.
Report an issue: GitHub.