Class: XGen::Mongo::Driver::QueryMessage

Inherits:
Message
  • Object
show all
Defined in:
lib/mongo/message/query_message.rb

Constant Summary

Constants inherited from Message

Message::HEADER_SIZE

Instance Attribute Summary

Attributes inherited from Message

#buf

Instance Method Summary collapse

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