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
Returns a new instance of QueryMessage.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 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 |
# File 'lib/mongo/message/query_message.rb', line 13 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.
11 12 13 |
# File 'lib/mongo/message/query_message.rb', line 11 def query @query end |
Instance Method Details
#first_key(key) ⇒ Object
55 56 57 |
# File 'lib/mongo/message/query_message.rb', line 55 def first_key(key) @first_key = key end |