Class: XGen::Mongo::Driver::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
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 68 69 |
# File 'lib/mongo/message/query_message.rb', line 29 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 end write_doc(sel) write_doc(query.fields) if query.fields end |
Instance Attribute Details
#query ⇒ Object (readonly)
Returns the value of attribute query.
27 28 29 |
# File 'lib/mongo/message/query_message.rb', line 27 def query @query end |
Instance Method Details
#first_key(key) ⇒ Object
71 72 73 |
# File 'lib/mongo/message/query_message.rb', line 71 def first_key(key) @first_key = key end |