Class: Mongo::QueryMessage
- Defined in:
- lib/mongo/message/query_message.rb
Constant Summary
Constants inherited from Message
Instance Attribute Summary collapse
-
#query ⇒ Object
readonly
Returns the value of attribute query.
Attributes inherited from Message
Instance Method Summary collapse
- #first_key(key) ⇒ Object
-
#initialize(db_name, collection_name, query) ⇒ QueryMessage
constructor
A new instance of QueryMessage.
Methods inherited from Message
#dump, #to_a, #update_message_length, #write_doc, #write_int, #write_long, #write_string
Constructor Details
#initialize(db_name, collection_name, query) ⇒ QueryMessage
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/mongo/message/query_message.rb', line 27 def initialize(db_name, collection_name, query) super(OP_QUERY) @query = query write_int(0) write_string("#{db_name}.#{collection_name}") write_int(query.number_to_skip) write_int(-query.number_to_return) # Negative means hard limit sel = query.selector if query.contains_special_fields sel = OrderedHash.new sel['query'] = query.selector if query.order_by && query.order_by.length > 0 sel['orderby'] = case query.order_by when String {query.order_by => 1} when Array h = OrderedHash.new query.order_by.each { |ob| case ob when String h[ob] = 1 when Hash # should have one entry; will handle all ob.each { |k,v| h[k] = v } else raise "illegal query order_by value #{query.order_by.inspect}" end } h when Hash # Should be an ordered hash, but this message doesn't care query.order_by else raise "illegal order_by: is a #{query.order_by.class.name}, must be String, Array, Hash, or OrderedHash" end end sel['$hint'] = query.hint if query.hint && query.hint.length > 0 sel['$explain'] = true if query.explain sel['$snapshot'] = true if query.snapshot end write_doc(sel) write_doc(query.fields) if query.fields end |
Instance Attribute Details
#query ⇒ Object (readonly)
Returns the value of attribute query.
25 26 27 |
# File 'lib/mongo/message/query_message.rb', line 25 def query @query end |
Instance Method Details
#first_key(key) ⇒ Object
69 70 71 |
# File 'lib/mongo/message/query_message.rb', line 69 def first_key(key) @first_key = key end |