Class: Mongo::Protocol::Query
- Includes:
- Monitoring::Event::Secure
- Defined in:
- lib/mongo/protocol/query.rb
Overview
MongoDB Wire protocol Query message.
This is a client request message that is sent to the server in order to retrieve documents matching provided query.
Users may also provide additional options such as a projection, to select a subset of the fields, a number to skip or a limit on the number of returned documents.
There are a variety of flags that can be used to adjust cursor parameters or the desired consistency and integrity the results.
Defined Under Namespace
Classes: Upconverter
Constant Summary
Constants included from Monitoring::Event::Secure
Monitoring::Event::Secure::REDACTED_COMMANDS
Constants inherited from Message
Message::BATCH_SIZE, Message::COLLECTION, Message::LIMIT, Message::MAX_MESSAGE_SIZE, Message::ORDERED, Message::Q
Instance Attribute Summary
Attributes inherited from Message
Instance Method Summary collapse
-
#initialize(database, collection, selector, options = {}) ⇒ Query
constructor
Creates a new Query message.
-
#maybe_compress(compressor, zlib_compression_level = nil) ⇒ Message
private
Compress the message, if the command being sent permits compression.
-
#payload ⇒ BSON::Document
Return the event payload for monitoring.
-
#replyable? ⇒ true
Query messages require replies from the database.
Methods included from Monitoring::Event::Secure
#compression_allowed?, #redacted
Methods inherited from Message
#==, deserialize, #hash, #maybe_decrypt, #maybe_encrypt, #maybe_inflate, #number_returned, #serialize, #set_request_id
Methods included from Id
Constructor Details
#initialize(database, collection, selector, options = {}) ⇒ Query
Creates a new Query message
61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/mongo/protocol/query.rb', line 61 def initialize(database, collection, selector, = {}) @database = database @namespace = "#{database}.#{collection}" @selector = selector @options = @project = [:project] @limit = determine_limit @skip = [:skip] || 0 @flags = [:flags] || [] @upconverter = Upconverter.new(collection, selector, , flags) super end |
Instance Method Details
#maybe_compress(compressor, zlib_compression_level = nil) ⇒ Message
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Compress the message, if the command being sent permits compression. Otherwise returns self.
114 115 116 |
# File 'lib/mongo/protocol/query.rb', line 114 def maybe_compress(compressor, zlib_compression_level = nil) compress_if_possible(selector.keys.first, compressor, zlib_compression_level) end |
#payload ⇒ BSON::Document
Return the event payload for monitoring.
82 83 84 85 86 87 88 89 |
# File 'lib/mongo/protocol/query.rb', line 82 def payload BSON::Document.new( command_name: upconverter.command_name, database_name: @database, command: upconverter.command, request_id: request_id ) end |
#replyable? ⇒ true
Query messages require replies from the database.
99 100 101 |
# File 'lib/mongo/protocol/query.rb', line 99 def replyable? true end |