Class: XGen::Mongo::Driver::QueryMessage
- Defined in:
- lib/mongo/message/query_message.rb
Constant Summary
Constants inherited from Message
Instance Attribute Summary
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.
11 12 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 |
# File 'lib/mongo/message/query_message.rb', line 11 def initialize(db_name, collection_name, query) super(OP_QUERY) write_int(0) write_string("#{db_name}.#{collection_name}") write_int(query.number_to_skip) write_int(query.number_to_return) sel = query.selector if query.order_by && query.order_by.length > 0 sel = OrderedHash.new sel['query'] = query.selector sel['orderby'] = case query.order_by when String {query.order_by => 1} when Array h = OrderedHash.new query.order_by.each { |ob| h[ob] = 1 } 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 write_doc(sel) write_doc(query.fields) if query.fields end |
Instance Method Details
#first_key(key) ⇒ Object
39 40 41 |
# File 'lib/mongo/message/query_message.rb', line 39 def first_key(key) @first_key = key end |