类:Mongo::Protocol::Query

继承:
message
  • 对象
显示全部
包括:
Monitoring::Event::Secure
定义于:
构建/ruby-driver-v2.19/lib/ mongo / 协议/ 查询.rb

Overview

MongoDB Wire协议查询消息。

这是发送到服务器的客户端请求消息,以便检索与所提供的查询匹配的文档。

用户还可以提供其他选项,例如用于选择字段子集的投影、要跳过的数字或对返回文档数量的限制。

有多种标志可用于调整游标参数或调整结果所需的一致性和完整性。

在命名空间下定义

类: 上转换器

常量摘要

Monitoring::Event::Secure中包含的常量

Monitoring::Event::Secure::REDACTED_COMMANDS

Message继承的常量

Message::BATCH_SIZEMessage::COLLECTIONMessage::LIMITMessage::MAX_MESSAGE_SIZEMessage::ORDEREDMessage::Q

实例属性摘要

Message继承的属性

#request_id

实例方法摘要折叠

Monitoring::Event::Secure中包含的方法

#compression_allowed?#redacted#sensitive?

Message继承的方法

#==deserialize#hash#maybe_add_server_api#maybe_decrypt#maybe_encrypt#maybe_inflate#number_returned#set_request_id

ID中包含的方法

包含

构造函数详情

#初始化(数据库,集合, 选择器, 选项 = {}) ⇒查询

创建新的查询消息

例子:

查找名为 Tyler 的所有用户。

Query.new('xgen', 'users', {:name => 'Tyler'})

查找所有名为 Tyler 且跳过5并返回10的用户。

Query.new('xgen', 'users', {:name => 'Tyler'}, :skip => 5,
                                               :limit => 10)

查找所有设置了 secondaryOk 位的用户

Query.new('xgen', 'users', {:name => 'Tyler'}, :flags => [:secondary_ok])

查找所有用户 ID。

Query.new('xgen', 'users', {}, :fields => {:id => 1})

参数:

  • database ( string , Symbol )

    要查询的数据库。

  • 集合 ( string , Symbol )

    要查询的collection。

  • 选择器 (哈希)

    查询选择器。

  • 选项 哈希 (默认为: {}

    其他查询选项。

选项哈希 ( options ):

  • :flags ( Array< Symbol > )

    标志位。 目前支持的值为 :await_data、:exhaus、:no_cursor_timeout、:oplog_replay、:partial、:secondary_ok、:tailable_cursor。

  • :limit 整数

    要返回的文档数量。

  • :项目 哈希

    投影。

  • :skip 整数

    要跳过的文档数量。



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File ' 构建/ruby-driver-v2.19/lib/ mongo / 协议/ 查询.rb', 第64行

def 初始化(database, 集合, 选择器, 选项 = {})
  @database = database
  @namespace = " #{ database } . #{ collection } "
  if 选择器.nil?
    提高 ArgumentError, ' Selector不能为 nil '
  end
  @selector = 选择器
  @options = 选项
  项目 = 选项[:项目]
  @limit = 确定_限制
  @skip = 选项[:skip]  || 0
  @flags = 选项[:flags] || []
  @upconverter = 上转换器.new(
    集合,
    BSON::文档.new(选择器),
    BSON::文档.new(选项),
    flags,
  )
  
end

实例方法详细信息

#maybe_compress (compressor, zlib_compression_level = nil) ⇒消息

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

如果发送的命令允许压缩,则压缩消息。 否则返回 self。

参数:

  • 压缩器 ( string , Symbol )

    要使用的压缩程序。

  • zlib_compression_level 整数 (默认为: nil

    要使用的zlib压缩级别。

返回:

  • (消息)

    Protocol::Compressed 消息或自身,具体取决于此消息是否可以压缩。

由于:

  • 2.5.0



125
126
127
# File ' 构建/ruby-driver-v2.19/lib/ mongo / 协议/ 查询.rb', 第125行

def 也许_压缩(压缩器, zlib_compression_level = nil)
  compress_if_possible(选择器.密钥.first, 压缩器, zlib_compression_level)
end

#有效负载BSON::Document

返回用于监控的事件负载。

例子:

返回事件有效负载。

message.payload

返回:

  • ( BSON::Document )

    事件有效负载。

由于:

  • 2.1.0



93
94
95
96
97
98
99
100
# File ' 构建/ruby-driver-v2.19/lib/ mongo / 协议/ 查询.rb', 第93行

def 有效负载
  BSON::文档.new(
    command_name: 上转换器.command_name,
    database_name: @database,
    命令: 上转换器.命令,
    request_id: request_id
  )
end

#可回复?true

查询消息需要数据库的回复。

例子:

该消息是否需要回复?

message.replyable?

返回:

  • ( true )

    对于查询始终为 true。

由于:

  • 2.0.0



110
111
112
# File ' 构建/ruby-driver-v2.19/lib/ mongo / 协议/ 查询.rb', 第110行

def 可回复?
  true
end

# Serialize (buffer = BSON::ByteBuffer.new, max_bson_size = nil, bson_overhead = nil) ⇒ BSON::ByteBuffer

将消息序列化为可以在线发送的字节。

参数:

  • 缓冲 ( BSON::ByteBuffer ) (默认为: BSON::ByteBuffer.new

    消息应插入的位置。

  • max_bson_size 整数 (默认为: nil

    最大BSON对象大小。

返回:

  • ( BSON::ByteBuffer )

    包含序列化消息的缓冲区。



135
136
137
138
139
# File ' 构建/ruby-driver-v2.19/lib/ mongo / 协议/ 查询.rb', 第135行

def 序列化(缓冲 = BSON::ByteBuffer.new, max_bson_size = nil, bson_overhead = nil)
  validate_document_size!(max_bson_size)

  
end